2014-03-04 56 views
0

cblPeriods是checboxlist控件的标识。下面的注释行不起作用,我不确定它为什么不能与chkboxes对象一起工作。但是,当我使用jquery选择器时,注释行下方的行工作正常。CheckboxList - 根据obj数组中的值勾选复选框

请建议为什么我无法使用chkboxes obj。我附上了萤火虫的监视窗口截图。声明

$(chkboxes[value=-1]).prop("checked", false); 

不会产生任何对象...

$(function() { 
     $('#cblPeriods').find(":checkbox").on("click", function() { 
      var $obj = $(this); 
      var selVal = $obj.val(); 
      var chkboxes = $('#cblPeriods').find(":checkbox"); 

      if (selVal == '-1') { //No 
       $(chkboxes).not($obj).removeAttr("checked"); 
      } 
      else if (selVal == '0') { //All 
       $(chkboxes).not($obj).prop('checked', true); 
       //$(chkboxes).find(":checkbox[value=-1]").removeAttr("checked"); //THIS ONE IS NOT WORKING.. 
       $('#cblPeriods').find(":checkbox[value=-1]").removeAttr("checked"); 
      } 

     }); 
    }); 

enter image description here

回答

2

jQuery中,find()会发现一个孩子与您的描述相符的DOM。需要注意的是

发现与ID的元素,cblPeriods下嵌套的复选框。当您在注释行中使用$(chkboxes).find(":checkbox[value=-1]")时,您告诉JQuery找到嵌套在嵌套在cblPeriods下的复选框下的复选框。显然,这不是你想要的。

也许这种替换:

$(chkboxes).filter(":checkbox[value=-1]").removeAttr("checked"); 
+1

过滤器的工作原理:-),看起来更好.. – Karan

0

你需要写,

$(chkboxes[value=-1]).removeAttr("checked"); //THIS ONE IS NOT WORKING.. 
+0

不知何故,它不起作用。 -1值为“否”复选框。它不会删除勾号的状态。 – Karan

1

是这个代码确定为ú?

var chkboxes = $('#cblPeriods'); 
$(chkboxes).find(":checkbox[value=-1]").removeAttr("checked"); 
+1

这个代码工作:-)。但是为什么它不能以其他简单的方式工作.. – Karan