有没有办法知道select
选项何时通过onchange
中的select
以外的事件进行了更改?
例如,通过jQuery。
$('select').val('2');
$('#someButton').click(function() { $('select').val('2');});
这意味着如果我通过单击按钮更改select
值,我可能会收到一条消息。但是当我通过从select
中选择选项来更改select
值时,系统不会向我发送消息。
除了设置一个计时器扫描每一页的页面以检查是否有任何select
值发生变化(这会严重降低性能),还有其他方法吗?
答案 0 :(得分: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 !');
}
});