0
 $tree.find('.checkbox').click(function() {
  $('.PrefCountryTree .countryLi input:checkbox').each(function () { 
                checkbox = $(this);
                chkBoxName = checkbox.attr('name');
                if(chkBoxName.search('chkbox_Region_') >= 0 || chkBoxName.search('chkbox_Country_') >= 0) {
                    if($(this).attr('checked')) {
                        //Do Something...
                    }
                }
}

jQuery チェックツリー プラグインを使用しています。ここで、チェックボックスのチェックを外しても、まだ結果が得られます

.is(':checked') = true

attr('checked') = checked

this.checked = true.

チェックボックスの初期状態ではなく、変更された状態を取得する必要があります。

私の側に欠けているものは何ですか?

4

2 に答える 2

0

bipen の answerに加えて、 に変更clickchangeます。

$tree.find('.checkbox').change(function() {
  var $this = $(this); //<--here
  $('.PrefCountryTree .countryLi input:checkbox').each(function () { 
        checkbox = $(this);
        chkBoxName = checkbox.attr('name');
        if(chkBoxName.search('chkbox_Region_') >= 0 || chkBoxName.search('chkbox_Country_') >= 0) {
            if($this.prop('checked')) { //changed attr to prop
                //Do Something...
            }
        }
}
于 2013-03-19T11:37:05.960 に答える
0

each の内側で$(this)は、クリックされたチェックボックスではなく、.checkbox の現在のオブジェクトになります....$(this)それぞれの外側で変数を作成し、クリックされたchekbpxがチェックされているかどうかを確認します

これを試して

$tree.find('.checkbox').click(function() {
   var $this = $(this); //<--here
   $('.PrefCountryTree .countryLi input:checkbox').each(function () { 
            checkbox = $(this);
            chkBoxName = checkbox.attr('name');
            if(chkBoxName.search('chkbox_Region_') >= 0 || chkBoxName.search('chkbox_Country_') >= 0) {
                if($this.attr('checked')) {
                    //Do Something...
                }
            }
}
于 2013-03-19T11:32:50.163 に答える