我试图编写一个简单的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();
此代码首先警告" Hello World"然后" undefined" (因此尝试从方法中访问它会返回一个空变量),有没有办法从testMethod中访问testVar?这不可能吗?我是以错误的方式解决这个问题吗?
答案 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/