#要求仕様
HTMLのテーブルがあり、下記の動作を実装したく思います。
1)テーブル上でマウスを動かすと、所定の行の色が変わる。
2)右クリックを押すと、サブメニューがでて、行に対する処理ができる。
3)処理の内容は、挿入、削除、コピー、ペースト
#解決方法
Jクエリのイベントで統一して、選択行のINDEXをグローバル変数ROWNUMに入れて
無事に渡すことができました。(VARを付けずにグローバル化)
#課題
挿入と削除を、力づくで作りました。
ところが、挿入と削除の瞬間が分かりにくい状態です。
そこでアニメーションを付けたいと思っているのですが、
そもそもJQUERYが苦手なので、困っています。
(泥臭いコード自体も、もっとすっきりしたいところですが、
現時点では、このコードがもっとも自分には理解しやすいです)
#質問事項
JQUERYでアニメーションを付けたい
JQUERYでコードをすっきりさせたい
すみませんが、私の力では、これが限界です。
html
1<table id="target" align="center" > 2省略 3 4 <div id="contextmenu"> 5 <ul> 6 <li onClick="menu1()">行の挿入</li> 7 <li onClick="menu2()">行の削除</li> 8 <li onClick="menu3()">行のコピー</li> 9 <li onClick="menu4()">行のペースト</li> 10 </ul> 11 </div>
javascript
1 2 $(document).on('mousemove', '#target tr', function () { 3 if (document.getElementById('contextmenu').style.display != "block") { 4 $(this).css("background-color", "#CCFFCC").css("cursor", "pointer"); 5 } 6 }); 7 $(document).on('mouseout', '#target tr', function () { 8 if (document.getElementById('contextmenu').style.display != "block") { 9 $(this).css("background-color", "#ffffff").css("cursor", "normal"); 10 } 11 }); 12 $(document).on("contextmenu", '#target tr', function (e) { 13 document.getElementById('contextmenu').style.left = e.pageX + "px"; 14 document.getElementById('contextmenu').style.top = e.pageY - window.pageYOffset + "px"; 15 document.getElementById('contextmenu').style.display = "block"; 16 rownum = this.rowIndex; 17 }); 18 }); 19
javascript
1 2 function menu1() { 3 var table = document.getElementById('target'); 4 var row_orig = table.rows[rownum]; 5 var row = table.insertRow(rownum + 1); 6 for (var i = 0; i < table.rows[rownum].cells.length; i++) { 7 var cell1 = row.insertCell(-1); 8 cell1.innerHTML = row_orig.cells[i].innerHTML 9 } 10 document.getElementById('contextmenu').style.display = "none"; 11 } 12 13 function menu2() { 14 var table = document.getElementById('target'); 15 var row = table.deleteRow(rownum); 16 document.getElementById('contextmenu').style.display = "none"; 17 } 18 19 function menu3() { 20 alert("menu3がクリックされました。"); 21 } 22 function menu3() { 23 alert("menu3がクリックされました。"); 24 }

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。