将事件添加到Jquery插件

时间:2011-02-09 08:19:55

标签: javascript jquery

我有一个JQuery插件,我想为它添加一些事件。 任何帮助,提示或教程?

3 个答案:

答案 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()模拟了一个事件   激活,完成一个   合成事件对象,它没有   完美地复制了一个   自然发生的事件。

美好的一天