Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从方法中访问jQuery插件变量?_Javascript_Jquery - Fatal编程技术网

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

Javascript 如何从方法中访问jQuery插件变量?,javascript,jquery,Javascript,Jquery,我正在尝试编写一个简单的jQuery插件,我遇到了一个绊脚石,尽管我不确定如何从插件的方法中访问插件上的变量 (function($) { $.fn.testPlugin = function() { var testVar = "Hello World"; alert(testVar); $.fn.testPlugin.testMethod(); }; $.fn.testPlugin.testMethod = funct

我正在尝试编写一个简单的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?这不可能吗?我这样做是错误的吗?

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

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

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

更新后的plunker位于此处:

您可以将变量放入自调用函数的外部作用域

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

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

$("body").testPlugin();

例如,如果您不希望您的变量被插件之外的任何其他代码访问,那么这可能是更理想的方法。小提琴:谢谢!我知道我一定错过了一些明显的东西。