通过JavaScript或jQuery

时间:2015-05-23 06:38:02

标签: javascript jquery jquery-events

有没有办法知道select选项何时通过onchange中的select以外的事件进行了更改?

例如,通过jQuery。

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

这意味着如果我通过单击按钮更改select值,我可能会收到一条消息。但是当我通过从select中选择选项来更改select值时,系统不会向我发送消息。

除了设置一个计时器扫描每一页的页面以检查是否有任何select值发生变化(这会严重降低性能),还有其他方法吗?

1 个答案:

答案 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 !');
    }
});

FIDDLE