jQuery плагин Авторский Scoping - PullRequest
0 голосов
/ 29 марта 2012

Если я хочу использовать общедоступную функцию для создаваемого плагина jQuery, это правильный способ сделать это?

(function($) {
    $.fn.myPlug = function(options) {
        // Do this...
        this.hello = function() {
            return 1;
        };
    }
})(jQuery);

var foo = $("div").myPlug();

// then do this...
foo.hello();

1 Ответ

1 голос
/ 29 марта 2012

Вы должны структурировать свой плагин так, чтобы имена методов могли быть переданы в качестве параметров вашему плагину.Это рекомендуется в руководстве по созданию плагинов jQuery :

(function($) {

    var methods = {
        init: function(options) {

        },
        hello: function () {
            return 1;
        }
    };

    $.fn.myPlug = 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.myPlug');
        }
    };

})(jQuery);

Использование будет выглядеть примерно так:

$("div").myPlug({ ... });
$("div").myPlug("hello"); // returns 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...