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

$(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 回答
0

除了bipen 的答案,更改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 回答