2011-06-05 71 views
4

我正在编写一个jQuery插件来处理事件触发后的回调函数。如何在jQuery插件中编写回调处理函数

(function($){ 
    return $.fn.myPlugin = function (options) { 
     var defaults = { 
      callback:defaultCallback, 
      many_more_params:'default etc', 
      many_more_params2:'default etc', 
      etc:'default etc' 
     } 
     var settings = $.extend(defaults, options); 

     var defaultCallback = function (params) { 
      // do default actions with params 
     } 

     $(this).click (function() { 
      var params = { param1:'hello', param2:'goodbye'}; 
      settings.callback(params); 
     }); 
    }; 
})(jQuery); 

在页面上我想设置一个自定义的回调这样

function customCallback (params) { 
    // do custom actions with params 
} 

var opt = { 
    callback:customCallback, 
    many_more_params:'etc', 
    many_more_params2:'etc', 
    etc:etc 
} 
$('#id').myPlugin(opt); 

我怎样才能让回调函数可以正常工作?

回答

4

更改您的代码的顺序。认沽:

var defaultCallback = function (params) { 
      // do default actions with params 
} 

var defaults = { 
    callback:defaultCallback, 
    many_more_params:'default etc', 
    many_more_params2:'default etc', 
    etc:'default etc' 
} 

,它应该工作,他们的方式,你希望它。

例子:http://jsfiddle.net/niklasvh/k5Wvb/

+0

它是完美的,三江源 – vitto 2011-06-06 16:21:19

+0

正是我一直在寻找! – Macumbaomuerte 2013-07-22 13:43:27