Flexigridを使ってみた。
Tableを簡単にかっこいいグリッドにしてくれるjQueryプラグインを見つけたので試してみました。
わずか数行で"ものすごいテーブル"に! - jQueryプラグイン「Flexigrid」 - マイコミジャーナル
プラグインのダウンロード等
・Google Codeからflexigrid.zipをダウンロード
・展開したフォルダからflexigrid.js(圧縮版はflexigrid.pack.js)と\css\flexigrid配下のflexigrid.cssとimagesフォルダを任意の場所にコピー
僕はRailsで使いたかったので、以下のように配置
展開フォルダ\flexigrid.js → RAILS_ROOT\public\javascripts
展開フォルダ\css\flexigrid配下全て → RAILS_ROOT\public\stylesheets
なお展開フォルダ\css\imagesに[開く],[閉じる]アイコンが入っていますが、今回は未使用なのでコピーしていません。
※prototype.jsと共存させる場合はFlexigridをprototype.jsと一緒に使う方法 - 電脳戦士ハラキリ -SE道とは死ぬ事と見つけたりを参考に、hideプロパティを置換します。
選択された行を取得する。
Flexigridのデフォルト設定ではTableの各行をクリックすると、その行が水色になります。
これはクリックされたtr要素にtrSelectedというclassを設定しているからです。
(もう一度クリックされた場合はclass属性を削除する)
なので、今選択されている(水色の)行を取得するにはtrSelectedをキーにセレクタを書けばいいです。
jQueryだとこんな感じ。
$(function() { $('#hoge tr').click(function(){ $('.trSelected').each(function(){ alert($(this).text()); }) }); });
ちなみにデフォルトでは、偶数行には'erow'というclassも設定されますので、
if ( $(this).attr("class") == 'trSelected' )
みたいに書くと、正しく動作しません。(セレクタは大丈夫です。)
jQuery-UIにもグリッド入れてほしいです。