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

Identify select option change (change, onchange, click) event through JavaScript or jQuery

本文关键字:change onchange click 事件 JavaScript jQuery 识别 选项 选择 通过      更新时间:2023-09-26

是否有办法知道select选项何时通过selectonchange以外的事件更改?

例如,通过jQuery。

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

意思是如果我通过点击按钮来改变select值,可能会提示消息。但是,当我通过从select中选择选项来更改select值时,我不会收到提示消息。

与其设置一个计时器,每次扫描页面来检查任何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 !');
    }
});

小提琴