我有一个JQuery插件,我想为它添加一些事件。 任何帮助,提示或教程?
答案 0 :(得分:30)
据我所知,如果你有某种关闭弹出窗口的按钮,你需要一个在关闭后触发的功能。
(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');
}
});
答案 1 :(得分:17)
在你的jquery插件中,你要做的第一件事就是在插件代码的某处触发自定义事件:
$( “#someElement”)触发器( “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();
});
}
答案 2 :(得分:2)
jQuery docs has everything about triggering an event
使用$.bind()
附加到事件的任何元素都将被通知事件已被触发并执行其代码。
示例:
$(document).trigger('my.event');
jQuery支持“命名空间”事件,因此您可以将事件命名为mypluginName.eventName
,以确保没有其他插件干扰您的事件;)
简单而干净,虽然要小心,但文档说明:
尽管.trigger()模拟了一个事件 激活,完成一个 合成事件对象,它没有 完美地复制了一个 自然发生的事件。
美好的一天