自定义JQuery插件的自定义事件

时间:2010-10-14 06:12:18

标签: jquery-plugins jquery

当您点击它上滑的对象按钮时,我制作了这个名为可移动的jQuery插件,并且应该触发自定义事件,例如 onDone

这就是我所做的(编码格式基于jQuery的http://docs.jquery.com/Plugins/Authoring):

init: function(){
    return this.each(function(){
        $('a', this).click(function(){
            $(this).parent().slideUp(function(){

                    // Somehow trigger the onDone method

            })
        });
    })
},
onDone: function(){
    // Default action
},

这就是我在调用插件时所做的事情

   $('li').removable({
        onDone: function(){
          // Overwrite default action
        },
    })

如何做到这一点?

2 个答案:

答案 0 :(得分:0)

如果您只需要在动画结束时调用它,只需将它作为第二个参数传递给slideUp,或者甚至在回调函数中使用$(foo).MyPlugin.onDone()调用它。

否则查看triggerbind jQuery函数 - 您可以使用您想要的任何字符串用于这些事件类型,以便您可以触发并绑定MyPluginDone事件

编辑:基于评论,你想要更简单的东西 -

正如您在引用的文章中所述,为选项提供可覆盖默认值的最佳方法是让您的插件接受options对象,然后获取组合默认值+覆盖:

var combinedOpts = $.extend({},defaults,overrides);

并从中获取所有值......

答案 1 :(得分:0)

试试这个。

(function($){
jQuery.fn.extend({
    removable: function(options) {
        var defaults = {  
             onDone: function(){alert('default action');}
        };  
        var options = $.extend(defaults, options);  
        return this.each(function() {   
            $('a', this).click(function(){
                 $(this).parent().slideUp(function(){
                 options.onDone.call();
            });
        });
});
    }
});
  })(jQuery);

  $('li').removable({
    onDone: function(){
      alert('Overwrite default action');
    },
})