2015-08-19 50 views
0

我想從一個jQuery插件內部傳遞一個布爾參數回調,但參數總是未定義。jQuery的插件,布爾回調參數

每次單擊鏈接時,onSwitch回調參數應在true和false之間切換。使用調試器,我可以看到傳遞給回調函數的值被正確地定義爲true或false,但在回調實現中它變成未定義的。

我試圖尋找其他幾個類似的問題,如thisthisthis但似乎無法得到這個工作。

這是我的插件定義:

(function ($) { 
    $.fn.switcherButton = function (options) { 
     // Set the default options 
     var settings = $.extend({},$.fn.switcherButton.defaults, options); 

     this.click(function() { 
      $.fn.switcherButton.switched = !$.fn.switcherButton.switched; 
      settings.onSwitch.call($.fn.switcherButton.switched); 
     }); 
     return this; 
    }; 
    // Plugin defaults – added as a property on our plugin function. 
    $.fn.switcherButton.defaults = { 
     onSwitch: function() {} 
    }; 
    $.fn.switcherButton.switched = false; 
}(jQuery)); 

HTML:

<a id="switchTest" href="#">switch</a> 

插件初始化:

$("#switchTest").switcherButton({ 
    onSwitch: function(switched){ 
     if(typeof switched === "undefined") 
      alert("callback param = undefined"); 
     else 
      if(switched) 
       alert("callback param = true"); 
      else 
       alert("callback param = false"); 
    } 
}); 

我創建了一個問題here的jsfiddle。

+0

檢查[這](http://jsfiddle.net/deepakb/zs3yt0t9/1/)。 – deepakb

回答

0

變化settings.onSwitch.call($.fn.switcherButton.switched)settings.onSwitch($.fn.switcherButton.switched)

調用來設置此,而不是實際的函數參數

+0

謝謝,這是一個令人尷尬的簡單解決方案。 – Padhraic