$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
。
我需要获取已更改的状态,而不是复选框的初始状态。
我身边缺少什么?
答案 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...
}
}
}