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

How do I access a jQuery plugin variable from within method?

本文关键字:jQuery 插件 变量 访问 方法      更新时间:2023-09-26

我想写一个简单的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 ?这难道不可能吗?我是不是走错路了?

您可以将变量置于外部作用域-自调用函数的作用域。

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

在第一个方法中创建了一个局部变量。这使得它的作用域仅限于方法本身。

相反,你应该像这样创建一个引用插件的变量:

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

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