3

我正在寻找一种从我的 jQuery 插件中分派事件的方法,以便它可以为该事件提供多个侦听器。我有插件设置,以便它返回对自身的引用,以便我以后可以通过公共方法添加侦听器。

到目前为止,我看到的唯一示例只有一个事件处理程序,例如:

$.fn.foo = function( options ) {
    ...
    // trigger event
    options.eventHandler();
}

$('#bar').foo({ eventHandler: myEventHandler })

我要做的唯一选择是,只需拥有一组已注册的事件处理程序并调用它们中的每一个,还是我错过了更好的选择。

4

2 回答 2

2

我会把一个数组扔到构造函数/选项对象中。这是通常的做法:

$("").plugIn(
{
    prop: "value",
    foo: "bar",
    eventsToFire: [
        function () { },
        function () { },
        function () { }
    ]
});

该插件会按照以下方式做一些事情:

假设您正在编写一个应该在集合上执行的插件。

jQuery.fn.plugIn = function (options)
{
    return this.each(function ()
    {
        var i = options.eventsToFire.length;

        while (i--) options.eventsToFire[i]();
    });
};
于 2009-10-05T15:01:23.370 回答
0

为什么不使用数组并循环遍历它呢?下面的代码将接受数组和单个事件处理程序。

$.fn.foo = function( options ) {
    ...
    // trigger event
    if(typeof eventHandler == "Array"){
      for(var i=0; i<eventHandler.length; i++){
        options.eventHandler[i]();
      }
    }else{
      options.eventHandler();
    }
}

$('#bar').foo({ eventHandler: [myEventHandler, anotherEventHandler] })
于 2009-10-05T10:35:02.830 回答