我在 jQuery 插件中缺少一些基本的变量范围。以下是一个 jQuery 插件存根(主要基于 jQuery.com 文档)。
我想让变量 ($test
和test
) 可用于插件中的所有函数。
在下面的示例代码中,变量 test 按预期将“hello”写入控制台。
但是,该变量$test
将 jQuery() 写入控制台。
问题:(a) 为什么不$test
将 jQuery(div#test) 写入控制台?(b) 使 jQuery 变量(或任何其他变量)在所有函数中可用的最佳实践是什么。例如,类似于 .net 类中的类级别变量。
(function ($) {
var settings = {
};
var methods = {
init: function (options) { if (options) { $.extend(settings, options); } return init(this, settings); }
};
$.fn.scopetest = function (method) {
// Method calling logic
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery plugin');
}
};
var $test = $('#test');
var test = 'hello';
var init = function (object, settings) {
return object.each(function () {
console.log($test);
console.log(test);
});
}
})(jQuery);