复选框更改事件未触发

时间:2011-09-12 12:04:31

标签: 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>

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

有什么想法吗?

非常感谢!

4 个答案:

答案 0 :(得分:31)

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

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

答案 1 :(得分:6)

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

$('.chk').trigger('change');

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

$('.chk').attr('checked', true).trigger('change');

答案 2 :(得分:3)

尝试更改

$('a').click(function() {
      $('.chk').attr('checked', true);
});

到 -

$('a').click(function() {
      $('.chk').attr('checked', true).trigger('change');
 });

这应该强制触发'更改'事件。

工作演示 - http://jsfiddle.net/ipr101/pwmBE/

答案 3 :(得分:0)

试试这个。

<div id ="chkall"> <a href="#">check all</a> <div>

            $('#chkall a').live("change", function() {
            $('.chk').attr('checked', true);
            });