2014-04-23 165 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> 元件。與輸入事件不同,更改事件不一定是 針對元素值的每次更改都會觸發。

相關問題