Javascript 向Jquery插件添加事件

Javascript 向Jquery插件添加事件,javascript,jquery,Javascript,Jquery,我有一个JQuery插件,我想给它添加一些事件。 有任何帮助、提示或教程吗?我理解正确,如果您有某种按钮可以关闭弹出窗口,并且需要关闭后触发的功能 (function($) { $.fn.somePlugin = function(options) { // do some stuff with popup $('#closeButton').click(function(e) { //close popup if (options.onAfterCl

我有一个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');
    }
});

使用
$.bind()
附加到事件的任何元素都将被通知事件已触发并执行其代码

例如:

$(document).trigger('my.event');
jQuery支持“名称空间”事件,因此您可以将事件命名为类似于
mypluginName.eventName
的名称,以确保没有其他插件干扰您的事件;)

简单、干净,但要小心,文档中指出:

尽管.trigger()模拟了一个事件 激活,包括 合成的事件对象,它没有 完美复制 自然发生的事件


美好的一天

在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();
        });
 }

嗯,什么插件?如果我们不知道它是关于什么的,我们就无法回答…@Anriëtte Combrink:这是一个弹出式插件,我想在它关闭后做点什么。我有一个类似的插件结构,只是我将“e”设置为具有某些值,这些值应该作为参数传递,但它总是显示为null。所以没有参数!有什么想法吗?设法整理好了。这与在Javascript中使用.call有关,其中传递的第一个参数应该是'this',就像在onChange.call(this,然后是parameters)中一样,这正是我所寻找的,对于理解这个问题做得很好!还应检查选项是否未定义