复选框更改事件未触发

use*_*247 14 javascript jquery

这是我的代码:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
<script>
  $(document).ready(function() {
    $('.chk').live('change', function() {
      alert('change event fired');
    });
    $('a').click(function() {
      $('.chk').attr('checked', true);
    });
  });
</script>
</head>
<body>
<div class="chkHolder">
  <input type="checkbox" class="chk" name="a" id="a" />
  <input type="checkbox" class="chk" name="b" id="b" />
</div>
<a href="#">check all</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我点击"全部检查"超链接时,我希望为每个复选框触发更改事件.但是,这种情况并没有发生.

有任何想法吗?

非常感谢!

Sam*_*ich 32

使用: $('.chk').attr('checked', true).change();

实例:http://jsfiddle.net/NRPSA/1/

  • 有谁知道为什么我们需要明确地做到这一点. (4认同)
  • @lulalala因为没有在该元素上调用事件,它只是设置一个属性.`change()`触发change事件. (4认同)

jef*_*dev 7

更改属性时,请使用以下内容:

$('.chk').trigger('change');
Run Code Online (Sandbox Code Playgroud)

或者像其他人建议的那样在您的代码中:

$('.chk').attr('checked', true).trigger('change');
Run Code Online (Sandbox Code Playgroud)