0

在我的代码 Jquery 中,我使用了:

$('#save').click(function (){
    //Staff...
    $("input:checkbox").prop('checked', true);
    //Staff...
}

以另一种方式,我有:

$("input:checkbox").change(function(){
   console.log('change ok');
});

问题是只有当我用鼠标检查它时才会检查取消检查,但是当我点击save按钮时(它的代码在上面),什么也没有发生。有什么建议么?谢谢

4

4 回答 4

3

以编程方式更改属性不会自动调用更改事件,您必须手动调用它:

$("input:checkbox").prop('checked', true).trigger('change');

的文档.trigger()

于 2013-07-22T10:56:58.123 回答
2

尝试此代码添加.trigger("change")$("input:checkbox").prop('checked', true)像这样:

$("input:checkbox").prop('checked', true).trigger("change")

trigger 方法强制执行附加到给定事件类型的匹配元素的所有处理程序和行为。

注意:您也忘记了)第一个代码末尾的 a 。所以更正的代码是:

$('#save').click(function (){
    //Staff...
    $("input:checkbox").prop('checked', true).trigger("change")
    //Staff...
})

你可以看看这个小提琴:http: //jsfiddle.net/LpC85/

于 2013-07-22T10:55:48.830 回答
1

要自动触发事件,您需要trigger()在 jQuery中使用

例子:$("input:checkbox").prop('checked', true).trigger('change');

看这里

于 2013-07-22T10:56:28.933 回答
1

再次调用该change函数。

 $('#save').click(function (){
  //Staff...
  $("input:checkbox").prop('checked', true).change();
  //Staff...
}); //<---- notice missing closing bracket()
于 2013-07-22T10:56:33.653 回答