2014-04-23 130 views
10

我有以下代码在这里:编程改变复选框不会触发更改事件

$('input[type="checkbox"][id="gridlines"]').change(function() { 
    alert('hello world'); 
}); 

$('#gridlines').prop('checked', true); 

当我打开我的网页,该复选框被选中,但“世界你好”没有得到提示

但是,当我手动点击复选框时,“hello world”得到提示

什么给了?

回答

13

当通过代码更改值时,您需要拨打change()或使用trigger()触发change事件。

使用.change()

$('#gridlines').prop('checked', true).change(); 

使用.trigger()

$('#gridlines').prop('checked', true).trigger("change"); 
5

也就是说它是如何想的工作,只有用户交互的支持,触发这种改变事件

您可以手动触发它使用.change()/.trigger('change');当改变到元素的值是由用户 致力于

$('#gridlines').prop('checked', true).change(); 

change

变化事件被触发为<input><select><textarea> 元件。与输入事件不同,更改事件不一定是 针对元素值的每次更改都会触发。

相关问题