通过JavaScript或jQuery识别选择选项更改(change、onchange、click)事件

通过JavaScript或jQuery识别选择选项更改(change、onchange、click)事件,javascript,jquery,jquery-events,Javascript,Jquery,Jquery Events,除了select中的onchange之外,是否有任何方法可以知道select选项何时通过事件更改 例如,通过jQuery $('select').val('2'); $('#someButton').click(function() { $('select').val('2');}); 这意味着,如果我通过单击按钮更改选择值,可能会提示一条消息。但是,当我通过从选择中选择选项来更改选择值时,我不会收到提示消息 与其设置一个计时器,逐个扫描页面以检查是否有任何select值更改(

除了
select
中的
onchange
之外,是否有任何方法可以知道
select
选项何时通过事件更改

例如,通过jQuery

    $('select').val('2');
    $('#someButton').click(function() { $('select').val('2');});
这意味着,如果我通过单击按钮更改
选择
值,可能会提示一条消息。但是,当我通过从
选择
中选择选项来更改
选择
值时,我不会收到提示消息


与其设置一个计时器,逐个扫描页面以检查是否有任何
select
值更改(这将严重降低性能),还有其他方法吗?

好吧,假设您有一个事件处理程序

$('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 !');
    }
});

可以包括
onchange
单击
处理程序的示例?