我正在编写一个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');
- }
- });