2011-12-27 24 views
2

jQueryを使用してテーブルのテーブルの列を非表示にしようとしていますが、実際の方法はわかりません。私は各列のドロップダウンを持っていて、hideとshowの2つのオプションを持っています。.hide()関数を使ってカラム0を非表示にしたいと思っています。jQueryを使用してテーブルの列を非表示にする

+0

は列自身の内側の表示/非表示のドロップダウンはありますか?使用しているコードを表示してもらえますか? – Beejamin

答えて

7

:nth-child疑似セレクタは、その位置に基づいて要素を選択します。たとえば、5番目の列を選択する場合は、$("td:nth-child(5)")を使用できます。

実装は次のようになります。ここでは

$("#mytable td:nth-child(5)").hide(); //or .hide(), or .toggle() 
+0

あなたの返事をありがとう、私はこれもショーのアクションに置く場合は、これも列を非表示になりますか?ありがとう:-) –

+0

'hide'を' show'に置き換えると、列が表示されます。 * Extra *: 'hide'を' toggle'に置き換えると、列が非表示になっている場合に表示され、表示されている場合に非表示になります。 –

+0

実際には、これはテーブル全体の5番目のtdを隠すだけで、各行の5番目のtdは隠しません。 '$("#mytable tr td:nth-​​child(5) ")'が動作するかどうか、あるいは 'each'を' tr'で使う必要があるかどうかは分かりません。 – Purag

1
var $col_select = $('#col-select'), 
    $opt_select = $('#opt-select'), 
    $my_table = $('table'); 
$col_select.add($opt_select).on('change', function() { 
    var col_val = $col_select.children(':selected').val(), 
     opt_val = $opt_select.children(':selected').val(); 
    if (col_val !== '' && opt_val !== '') { 
     $my_table.find('td:nth-child(' + col_val + ')').css('display', opt_val); 
    } 
}); 

デモです:http://jsfiddle.net/RjXpq/2/

+0

そのループは非常に効率的ではありません。 1) 'col_select'の値は実行中に変更されません。したがって、値をキャッシュするほうがよいでしょう。 2) ':nth-​​child'も' td'セレクタで直接使用することができ、 '.each()'が不要になります。 –

+0

@RobWループの良い呼び出し、ここではあまり効率的ではないの定義です:http://jsperf.com/jquery-each-tr-vs-td-selector(答え更新) – Jasper

+0

+1フィドルとPerf ;) –

関連する問題