触发多事件

时间:2011-02-19 10:52:41

标签: triggers jquery

我可以在trigger()中触发多个事件,还是在JQuery中链接它们? E.g:

$(element).trigger('event1 event2 event3');

$(element).trigger('event1').trigger('event2');

$(element).trigger('event1');
$(element).trigger('event2');

2 个答案:

答案 0 :(得分:6)

正如其他答案所述,最好的内置方法是:

$(element).trigger('event1').trigger('event2');

然而,我发现如果你在这个地方做这个,一个简单的插件可以很好地清理它,允许空格分隔的语法(比如other jQuery {{3} })。这是一个这样一个插件的快速示例:

$.fn.triggerAll = function(events) {
    if(!events) return this; //don't blow up if .triggerAll() without params
    var self = this;         //keep a reference
    $.each(events.split(" "), function(i, e) { self.trigger(e); });
    return this;
};

然后你可以用空格分隔的事件名称来调用它,如下所示:

$(element).triggerAll('event1 event2 event3');

methods

答案 1 :(得分:0)

$(element).trigger('event1 event2 event3');

不受支持。

(element).trigger('event1').trigger('event2');

优于

$(element).trigger('event1');
$(element).trigger('event2');

因为每次触发事件时都没有重建包含$(元素)的jQuery对象。