如何从方法中访问jQuery插件变量?

时间:2014-08-18 10:44:59

标签: javascript jquery

我试图编写一个简单的jQuery插件,虽然我不知道如何从一个方法中访问插件中的变量,但我还是遇到了绊脚石插件。

(function($) {
    $.fn.testPlugin = function() {
        var testVar = "Hello World";
        alert(testVar);
        $.fn.testPlugin.testMethod();
    };

    $.fn.testPlugin.testMethod = function() {
        alert($.fn.testPlugin.testVar);
    };
}(jQuery));

$("body").testPlugin();

FIDDLE HERE

此代码首先警告" Hello World"然后" undefined" (因此尝试从方法中访问它会返回一个空变量),有没有办法从testMethod中访问testVar?这不可能吗?我是以错误的方式解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您可以将变量放在外部作用域 - 自调用函数的作用域中。

(function($) {
    var testVar;
    $.fn.testPlugin = function() {
        testVar = "Hello World";
        alert(testVar);
        $.fn.testPlugin.testMethod();
    };

    $.fn.testPlugin.testMethod = function() {
        alert(testVar);
    };
}(jQuery));

$("body").testPlugin();

如果您不希望除插件之外的任何其他代码都可以访问您的变量,那么这可能是更理想的方法。小提琴:http://jsfiddle.net/79sg8es1/

答案 1 :(得分:1)

您正在第一个方法中创建局部变量。这使得它的范围仅限于方法本身。

相反,您应该实际创建该变量,并参考插件,如下所示:

$.fn.testPlugin.testVar = "Hello World";

你更新的plunker在这里:http://jsfiddle.net/5zt9ps20/