2011-05-20 2 views
0

私はチェックボックスの表を持っています。 「すべて選択」というテキストのdivをクリックすると、すべてのチェクボックスが選択され、チェックボックスがオンになっているかどうかに関係なく、divのテキストを「すべて選択解除」に変更する必要があります。次のチェックボックスを最適化する方法はありますか?

私は次のように書いていますが、うまくいきました。

if($(this).text() == "Select All") { 
     $(this).text("Unselect All"); 
     $.each($(".classname"),function(i ,ll){ 
      $(this).attr('checked', true); 
     }); 
    }else{ 
     $(this).text("Select All"); 
     $.each($(".classname"),function(i ,ll){ 
      $(this).attr('checked', false); 
     }); 
    } 

ありがとう。

答えて

3

まず、$()は、関数呼び出しです。また、あなたの$.eachループは冗長です。なぜなら、jQueryオブジェクトはすべての一致した要素に変更を適用するので、ループは不要です(つまり、jQueryメソッドはベースに設定されています)。おそらく属性を削除するのではなく、それをfalseに設定する方がよいでしょう。このようなものはおそらくもっと良いでしょう:

var $this = $(this); 
if($this.text() == 'Select All') { 
    $this.text('Unselect All'); 
    $('.classname').attr('checked', true); 
} 
else { 
    $this.text('Select All'); 
    $('.classname').removeAttr('checked'); 
} 
4

私はclassnameが該当するチェックボックスのクラスであると仮定しています。あなたは試すことができます:あなたは$(this)多くを使用するつもりなら、あなたがvar $this = $(this)を言う必要がありますので、すべての

if($(this).text().trim() == "Select All") { 
    $(this).text("Unselect All"); 
    $(".classname").attr('checked', true); 
}else{ 
    $(this).text("Select All"); 
    $(".classname").attr('checked', false); 
} 
+2

+1主な問題( '$ .each')を見つけるために。 –