2011-06-05 92 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