2013-03-19 63 views
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 check-tree插件。在這裏,即使我取消它仍然給我複選框結果未捕獲JQuery複選框狀態更改

.is(':checked') = true

attr('checked') = checked

this.checked = true

我需要改變狀態而不是複選框的初始狀態。

我身邊缺少的是什麼?

回答

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... 
       } 
      } 
} 
+0

謝謝比朋,但沒有成功!仍然嘗試 – 2013-03-19 12:43:51

+0

你試過'$ this.is(':checked')'......? – bipen 2013-03-19 12:47:26

+0

是的,我做了,即使在改變事件而不是點擊,但沒有成功 – 2013-03-19 13:52:13

0

除了bipen's 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... 
      } 
     } 
}