我有一个<select>并且处理change()事件。当用户更改选择选项时,我要执行一系列操作。但是,如果我通过$(item).trigger('change')触发更改,那么我不想执行上述一系列操作。

我看到trigger() contains有参数的​​重载。我不确定这是否行得通,因为我还没有编写自定义事件。因此,我该怎么做才能确定用户触发的事件与程序化触发的事件之间的区别?

最佳答案

这是一种快捷方法:

var progChange = false;

$('select').change(function() {
    if (!progChange) {
        // Do user actions...
    }
    progChange = false;
});

function callSelectChange() {
    progChange = true;
    $('select').change();
}


您可以使用trigger方法以基本相同的方式进行操作,这将消除全局,这是一件好事:

$('select').change(function(event, progChange) {
    if (!progChange) {
        // Do user actions...
    }
});

$('select').trigger('change', [true]);


工作示例:http://jsfiddle.net/FishBasketGordo/XsPc5/

关于jquery - jQuery-确定用户与程序事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7275812/

10-11 13:18