2010-10-14 130 views
0

当您单击对象按钮,它向上滑动,应该引起类似的onDone自定义事件我做了这个jQuery插件称为可拆卸自定义事件对于自定义的jQuery插件

这里就是我做(的codeing格式是基于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 
     }, 
    }) 

如何才能做到这一点,当我做了什么?

回答

0

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

否则看triggerbind jQuery的功能 - 你可以使用任何你想要的那些事件类型的任何字符串,所以你可以触发并绑定MyPluginDone事件

编辑:根据评论你想要的东西简单 -

正如你所引用的文章中指出,为客户提供覆盖,能够默认选项的最好办法是让你的插件接受options对象,然后得到合并默认+覆盖你这样做:

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

并得到所有使用的值...

+0

我的目标是在调用我的插件时覆盖默认的“onDone”行为。因此,当事情发生时,使用该插件的每个对象都可以有一些自定义操作。 – Siavash 2010-10-16 09:41:26

+0

编辑,以解释我现在认为你的意思是... – tobyodavies 2010-10-16 23:14:27

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'); 
    }, 
})