html
1<table> 2 <thead> 3 <th class="sort" data-sort="group-a">A</th> 4 <th class="sort" data-sort="group-b">B</th> 5 <th class="sort" data-sort="group-c">C</th> 6 </thead> 7 <tbody> 8 <tr> 9 <td class="group-a before01">内容01-1</td> 10 <td class="group-a after01">内容01-2</td> 11 <td class="group-b">内容02</td> 12 <td class="group-c">内容03</td> 13 </tr><tr> 14 <td class="group-a">内容04</td> 15 <td class="group-b before01">内容05-1</td> 16 <td class="group-b after01">内容05-2</td> 17 <td class="group-a">内容06</td> 18 </tr> 19・ 20・ 21・ 22 <tbody> 23</table> 24 25<input type="checkbox" id="change01"><label for="change01">変更</label> 26
この様なhtmlでチェックボックス「ID:change01」をクリックした時に、クラス「before01」と「after01」の表示を切り替えたいと思っています。
各列にList.jsによるソート(指定したクラスでソート)をかけているので、要素の位置を前後に入れ替えた上で要素を表示/非表示にしています。
Jquery
1 2$('#change01').change(function(){ 3 if ($(this).is(':checked')) { 4$('.after01').after($('.before01')).show(); 5$('.before01').hide(); 6} else { 7$('.before01').after($('.after01')).show(); 8$('.after01').hide(); 9} 10});
css
1.after01{display:none;}
ここまでは出来たのですが、チェックを外した際にすべての値が返ってきてしまいました。
どうしたら各要素毎に入れ替えと表示/非表示ができるのでしょうか?
教えていただけるとありがたいです。
よろしくお願いします。
list.jsを使ったことがないので申し訳ございませんが単純なshow,hideではダメな理由をお教えいただけませんか?
クラス毎のソートをしているのですが、同じ行に同じクラスを持つ要素があると先頭の要素が対象になるみたいで、hide/showだとソートが適用されませんでした…
入れ替えるのはよいとしてtd要素をshow/hideするのはおかしくないですか?
表示上ではデフォルトが「内容01-1/内容02/内容03、内容04/内容05-1/内容06」で、チェックボックスにチェックを入れると「内容01-2/内容02/内容03、内容04/内容05-2/内容06」とした上でソートを効かせたいので、要素を入れ替えた後にhide/showを入れています。

回答1件
あなたの回答
tips
プレビュー



