2015-08-19 2 views
0

Я пытаюсь передать логический параметр для обратного вызова изнутри jquery-плагина, но параметр всегда не определен.jquery plugin, boolean callback parameter

Параметр обратного вызова onSwitch должен чередоваться между истинным и ложным каждый раз, когда нажимается ссылка. Используя отладчик, я вижу, что значение, переданное функции вызова обратного вызова, правильно определено как true или false, но внутри реализации обратного вызова оно переходит в неопределенное.

Я пытался смотреть на несколько других подобных вопросов, как thisthis и this, но не могу показаться, чтобы получить эту работу.

Это мое определение плагина:

(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"); 
    } 
}); 

Я создал jsfiddle проблемы here.

+0

Check [это] (http://jsfiddle.net/deepakb/zs3yt0t9/1/). – deepakb

ответ

0

Изменение settings.onSwitch.call($.fn.switcherButton.switched) в settings.onSwitch($.fn.switcherButton.switched)

вызова используется для установки этого и не фактический аргумент функции

+0

Спасибо, это было смущающе легко исправить. – Padhraic

Смежные вопросы