jQuery プラグイン内の可変スコープに関する基本的なものが欠けています。以下は jQuery プラグインのスタブです (主に jQuery.com のドキュメントに基づいています)。
$test
変数 (およびtest
) をプラグイン内のすべての関数で使用できるようにしたいと考えています。
以下のコード例では、変数 test は期待どおりに「hello」をコンソールに書き込みます。
ただし、変数$test
は jQuery() をコンソールに書き込みます。
$test
質問: (a) 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);