2015-05-23 114 views
1

有沒有什麼辦法知道select選項是否通過onchange以外的事件在select中更改?通過JavaScript或jQuery識別選擇選項更改(更改,onchange,click)事件

例如,通過jQuery。

$('select').val('2'); 
    $('#someButton').click(function() { $('select').val('2');}); 

也就是說,如果我通過點擊按鈕改變select價值,我可能會提示消息。但是當我通過從select中選擇選項來更改select的值時,我不會收到消息提示。

而不是設置一個計時器掃描頁面每一個單一的檢查任何select值改變(這將大大降低性能),有沒有其他方式?

+0

在問題中可以包含'onchange','click'處理程序的示例嗎? – guest271314

回答

2

好了,說你有一個事件處理程序

$('select').on('change', function() { 
    alert('change triggered !'); 
}); 

該事件處理程序將不會被編程改變值被觸發,只有用戶操作是否會觸發處理,除非它的具體觸發,這意味着我們有要做到這一點

$('select').val('2').trigger('change'); 

這給了我們檢查的能力,如果該事件是由用戶操作解僱或被編程觸發,通過做

$('select').on('change', function(e) { 

    if (e.isTrigger) { 
     alert('change triggered programatically !'); 
    } else { 
     alert('change triggered by user !'); 
    } 
}); 

FIDDLE