【发布时间】:2011-02-09 08:19:55
【问题描述】:
我有一个 JQuery 插件,我想向它添加一些事件。 有任何帮助、提示或教程吗?
【问题讨论】:
-
呃,什么插件?如果我们不知道它是关于什么的,我们就无法回答......
-
@Anriëtte Combrink :它的一些弹出插件,我想在关闭后做一些事情。 Link
标签: javascript jquery
我有一个 JQuery 插件,我想向它添加一些事件。 有任何帮助、提示或教程吗?
【问题讨论】:
标签: javascript jquery
据我所知,如果您有某种关闭弹出窗口的按钮,并且您需要一个在关闭后触发的功能。
(function($) {
$.fn.somePlugin = function(options) {
// do some stuff with popup
$('#closeButton').click(function(e) {
//close popup
if (options.onAfterClose !== undefined) {
options.onAfterClose(e);
}
});
};
})(jQuery);
它只是从点击事件传递事件。
$('#someId').somePlugin({
onAfterClose: function(e) {
alert('after close');
}
});
【讨论】:
在您的 jquery 插件中,您要做的第一件事就是在插件代码中的某处触发您的自定义事件:
$("#someElement").trigger("someSpecialEvent");
如果需要,您还可以在触发函数内部传递数据。
$("#someElement").trigger("someSpecialEvent", "this does not need to be a string");
接下来,在插件代码的其他位置为自定义事件创建事件处理程序:
$("#someElement").bind("someSpecialEvent", function(event, data) {
//If you had passed anything in your trigger function, you can grab it using the second parameter in the callback function.
});
然后您可以允许用户将回调函数作为选项传递,如下所示:
$("#sampleElement").myPlugin({
someEvent: function() {
//user logic
}
});
最后,在您的插件代码中,您可以通过几种不同的方式调用用户的函数。一个例子是:
$.fn.samplePlugin = function(options) {
options = $.extend({}, $.fn.samplePlugin.options, options);
$("sampleElement").bind("specialEvent", function() {
options.someEvent.call();
});
}
【讨论】:
jQuery docs has everything about triggering an event
使用$.bind() 附加到事件的任何元素都将被通知该事件已被触发并执行其代码。
例子:
$(document).trigger('my.event');
jQuery 支持“命名空间”事件,因此您可以将事件命名为 mypluginName.eventName,以确保没有其他插件干扰您的事件;)
简单而干净,但要小心,文档指出:
虽然 .trigger() 模拟了一个事件 激活,完成 合成事件对象,它不 完美复制一个 自然发生的事件。
美好的一天
【讨论】: