jQuery插件中的变量范围?

时间:2014-02-18 12:12:12

标签: javascript jquery jquery-plugins scope

我继续提问,previously asked。这是一个太简单的样本:)

有一个插件,现在常用的语法是什么。我想在初始化时创建一个元素,我想从另一个方法访问它。在下面的示例中,我非常深入地说明了它,但是如果我把它放在init方法之外,open方法会丢失一个错误,因为它无法找到它。 (我不确定我是否以正确的方式从另一个方式调用这些方法......)

(function($, window, document, undefined) {

        var opt = {
            text : 'sample'
        };
    var methods = { 
        init: function(options) {
            var self = $(this);

            if (options) {
                $.extend(opt,options);
            }
            return this.each(function () {
                var container = $('<div class="container" />');

                container.text(opt.text);
                $(this).append(container);
                $(this).click(function() {
                    self.pluginName('open');
                });
            });
        },
        open: function(args) {
            container.text('opened');
        },
        submit: function(args) {
            // call another method...
        }
    };

    jQuery.fn.pluginName = function (method) {
        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.pluginname');
        }
    };
})(jQuery, window, document);

我想把它称为任何数字元素,如:

$(function() {
   $('div').pluginName();
});

0 个答案:

没有答案