jquery插件,布尔回调参数

时间:2015-08-19 12:33:34

标签: javascript jquery jquery-plugins callback

我正在尝试将一个布尔参数从jquery插件内部传递给回调,但参数始终未定义。

每次单击链接时,onSwitch回调参数应在true和false之间切换。使用调试器我可以看到传递给回调调用函数的值被正确定义为true或false,但在回调实现中它变为未定义。

我尝试过查看其他几个类似问题,例如this thisthis似乎无法使其发挥作用。

这是我的插件定义:

(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。

1 个答案:

答案 0 :(得分:0)

settings.onSwitch.call($.fn.switcherButton.switched)更改为settings.onSwitch($.fn.switcherButton.switched)

调用用于设置此函数而不是函数的实际参数