未捕获JQuery复选框状态更改

时间:2013-03-19 11:30:19

标签: jquery jquery-plugins

 $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 check-tree插件。在这里,即使我取消选中该复选框,它仍然会给我

的结果

.is(':checked') = true

attr('checked') = checked

this.checked = true

我需要获取已更改的状态,而不是复选框的初始状态。

我身边缺少什么?

2 个答案:

答案 0 :(得分: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...
                }
            }
}

答案 1 :(得分:0)

除了bipen's answer之外,请将click更改为change

$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...
            }
        }
}