我正在寻找一种从 jQuery 插件分派(dispatch)事件的方法,以便它可以有多个该事件的监听器。我设置了插件,以便它返回对自身的引用,以便我稍后可以通过公共(public)方法添加监听器。
到目前为止我见过的唯一示例有一个事件处理程序,例如:
$.fn.foo = function( options ) {
...
// trigger event
options.eventHandler();
}
$('#bar').foo({ eventHandler: myEventHandler })
这是我唯一要做的选择,只需拥有一组已注册的事件处理程序并调用每个处理程序,或者我是否缺少更好的选择。
最佳答案
我会将一个数组放入构造函数/选项对象中。这是通常的做法:
$("").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]();
});
};
关于jQuery 从插件中为多个监听器调度事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1517698/