2011-10-23 15 views
0

私は視界から隠されているテーブル内のすべてのチェックボックスをオンにしないためにそれを必要とjQueryのCheckallは、チェックボックス

Basicllyに隠されていないcheckboxsをチェックするには、このチェックボックスを得るカント

ui-tableFilter-hidden 
$("input:checkbox.checkall").live('click', function(event){ 
    var checkedStatus = this.checked; 
    if(!$('table tbody tr').hasClass('ui-tableFilter-hidden')) 
    { 
     $("td.small input:checkbox").each(function() { 
      this.checked = checkedStatus; 
     }); 
    } 
}); 

クイックフィックスは、この1

$("input:checkbox.checkall").live('click', function(event){ 
    var checkedStatus = this.checked; 

     $("td.small input[type=checkbox]:visible").each(function() { 
      this.checked = checkedStatus; 
     }); 

}); 
で上記のコードを置き換えることでした
+0

は、あなたが一緒にjsFiddleを置くことができる...代わりにこのような何かを試してみてください? – Sparky

+1

また、あなたの答えにchangeイベントを使用する必要があります。 – ima007

答えて

1

上記のコードでIFチェックとEACHループは無関係です。 IFはある時点で真と評価され、IFをチェックインしたかどうかに関係なく、セレクタに一致するすべてのチェックボックスを使ってEACHループが反復処理されます。

$('table tbody tr')each(function(){ 
    if(!$(this).hasClass('ui-tableFilter-hidden')){ 
      $(this).find("td.small input:checkbox").each(function() { 
       this.checked = checkedStatus; 
      }); 
     } 
    } 
+0

行をループする必要はありません。OPが自分自身を理解したように、:visible擬似セレクタを使用することができます。あるいは、投稿したときに、 'ui-tableFilter-hidden'クラスなしですべての行を検索できます。 – ima007

0

理想的には、クリックだけでなく入力を変更できるため、変更イベントを使用するのが理想的です。 ui-tableFilter-hiddenですべての行を見つけて、適切なチェックボックスをオンにすることもできます。また、propを使用して、チェックボックスの状態を確認します。これは、this.checkedも有効ですが、jQuery 1.6から利用できます。

$("input:checkbox.checkall").change(function(){ 
    var jCheckAll = $(this); 
    var checkedStatus = jCheckAll.prop("checked"); 
    var jRows = $('table tbody tr:not(.ui-tableFilter-hidden)'); 
    jRows.find("td.small input:checkbox").prop("checked",checkedStatus); 
}); 
+1

$( 'input [type = checkbox]:visible')を使用しました。 – RussellHarrower

+0

自分のコードを編集して、そのクラスを持たない行が必要であることを反映しました。あなたの方法はより簡単です! changeイベントを必ず使用してください。 – ima007

関連する問題