チェックボックスの付いたテーブル要素のソーティングがしたかったので、ソーティング機能を持ったjQueryのプラグインである「Tablesorter」とshift+クリックで一括チェック・一括チェック解除が出来る「jQuery Field Plug-in」を併用して使いました。
単純に二つのプラグインを設定したら、ソーティングをした時に、一括チェックが指定した順番にならない現象が生じたので、その対策のメモとして記載したいと思います。
目次
- 前提条件
- 各プラグインダウンロード先
- 対応方法
- サンプルプログラム
- サンプルプログラム実行結果
前提条件
- 検証ブラウザ:Firefox 22.0
- jQueryのバージョン:jquery1.8.3
- Tablesorterのバージョン:2.0.5
- jQuery Field Plug-inのバージョン:0.9.6
各プラグインダウンロード先
各プラグインのダウンロード先は以下になります。対応方法
Tablesorterでソートした後に再度一括チェックのプラグイン「jQuery Field Plug-in」を定義してあげないと、ソートした前の状態でjQuery Field Plug-inが紐付いてしまっている為、予期せぬ場所にチェックが入ってしまいます。そこで、Tablesorterのソートが終わった時発生するイベント「sortEnd」時に再度定義してあげると動きます。
サンプルプログラム
実際にサンプルプログラムを使って動かしてみます。<!DOCTYPE HTML> <html lang="jp"> <head> <meta charset="utf-8"> <!--ダウンロードしてきたCSSを読み込みます --> <link rel="stylesheet" type="text/css" href="themes/green/style.css"/> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script src="http://www.pengoworks.com/workshop/jquery/field/jquery.field.min.js"></script> <script src="jquery.tablesorter.min.js"></script> <script type="text/javascript"> $(function() { //jquery fieldの設定 $('input:checkbox').createCheckboxRange(); //tablesorterの設定 $('#large').tablesorter() .bind("sortEnd", function(){ //再設定 $('input:checkbox').createCheckboxRange(); }); }); </script> </head> <body> <table id="large" cellspacing="0" class="tablesorter"> <thead> <tr> <th>Name</th> <th>Major</th> <th>Sex</th> <th>English</th> <th>Japanese</th> <th>Calculus</th> <th>Geometry</th> </tr> </thead> <tfoot> <tr> <th>Name</th> <th>Major</th> <th>Sex</th> <th>English</th> <th>Japanese</th> <th>Calculus</th> <th>Geometry</th> </tr> </tfoot> <tbody> <tr> <td>Student01</td> <td>Languages</td> <td>male</td> <td>80</td> <td>70</td> <td>75</td> <td><form><input type="checkbox" checked=""/></form></td> </tr> <tr> <td>Student02</td> <td>Mathematics</td> <td>male</td> <td>90</td> <td>88</td> <td>100</td> <td><form><input type="checkbox"/></form></td> </tr> <tr> <td>Student03</td> <td>Languages</td> <td>female</td> <td>85</td> <td>95</td> <td>80</td> <td><form><input type="checkbox" checked=""/></form></td> </tr> <tr> <td>Student04</td> <td>Languages</td> <td>male</td> <td>60</td> <td>55</td> <td>100</td> <td><form><input type="checkbox" checked=""/></form></td> </tr> </tbody> </table> </body> </html>
サンプルプログラム実行結果
サンプルプログラムを実行した結果は以下のようになります。Japaneseでソートした後にGeometryを一番上から3番目までシフトを押しながらチェックをしています。
0 コメント:
コメントを投稿