组点击()和$ .each(obj.click())之间的JQuery复选框状态更新不同

时间:2010-05-31 06:59:24

标签: jquery events checkbox

以下代码在同一行为中不起作用。 click事件和调用foo()的顺序是不同的。我想知道为什么他们在调用click()之间表现出不同的顺序,并在每次调用click()之前迭代对象。

<script type="text/javascript">

      function foo(obj){
        alert(obj.id+" ->"+obj.checked);
      }

      function clickAll(val){
        if (val) {
          $(":checkbox").click();
        } else {
          $(":checkbox").each(function(i,obj){
              obj.click();
              });
        }
      }
    </script> 
  </head>
<body>
<input type="checkbox" id="check1" onclick="foo(this)" /> a
<input type="checkbox" id="check2" onclick="foo(this)" /> b
<input type="checkbox" id="check3" onclick="foo(this)" /> c
<input type="button" onclick="clickAll(true)" value="click all" />
<input type="button" onclick="clickAll(false)" value="click all each" />
</body>

2 个答案:

答案 0 :(得分:0)

而不是......

$(":checkbox").each(function(i,obj){
 obj.click();
});

尝试:

$(':checkbox').each(function() {
 $(this).click();
});

答案 1 :(得分:0)

$(":checkbox").each(function(i,obj){ // i is an index and obj is a dom element object... 
    //obj.click();  not a jQuery Object that is why it's not working as expected
    $(obj).click(); // do this instead..
});