我正在编写一个jQuery插件,需要执行回调函数,例如,当从< select>中选择一个选项时该插件适用于.
$('div.foo').pluginBar({ option1: 'red',someEvent: function() { // Do stuff } });
我希望能够在我的插件代码中定义默认的someEvent函数,但是如果用户在它们传递的选项中定义了该函数,它应该覆盖默认函数.这是可能的$.extend(),还是我看错了地方?
我已经看了plugin authoring教程,但我认为它不包括在任何地方扩展函数的默认行为.我已经阅读了有关使用init:函数的内容,但我宁愿只能定义一个函数(在插件名称空间内)并使用传递给插件的选项进行更改.
解决方法
这是一个例子:
(function( $) { $.fn.pluginBar = function(options) { var settings = $.extend( { someEvent: function() { alert('default'); } },options); return this.each(function() { settings.someEvent(); }); }; })( jQuery ); $('div.foo').pluginBar({ option1: 'red',someEvent: function() { alert('custom'); } });