Подтвердить что ты не робот

Вызов плагина jQuery без указания каких-либо элементов

Скажем, у меня есть следующий плагин jQuery:

$.fn.myPlugin = function () {
    //plugin code
}

Обычно вы вызываете плагин на определенное количество элементов, например:

$("body").myPlugin();

Есть ли способ вызвать мой плагин без указания элемента?

Я пробовал называть его так: $.myPlugin();, но это не работает.

Что работает: $().myPlugin();, но является ли это правильным способом его вызова?

4b9b3361

Ответ 1

быстрый способ записи:

$.myPlugin = function () {
    // Plugin code
}

Способ записи right заключается в следующем:

(function ($) {
    $.extend({
        myPlugin: function () {
            // plugin code
        }
    });
})(jQuery);

Сначала это может показаться немного запутанным, но это обычный шаблон jQuery.

(function($){
     // Code
})(jQuery);

Этот код создает анонимную функцию и называет ее передачей jQuery в качестве аргумента. Внутри функции этот аргумент привязан к $. Причина этого заключается в том, что он позволяет работать с $, даже если jQuery работает в режиме no-conflict.

Вторая часть $.extend. Он в основном расширяет сам объект jQuery при вызове с единственным аргументом.

Вызов плагина (в быстром и правильном случае):

$.myPlugin();

Ответ 2

Я думаю, что вы ищете jQuery.extend():

jQuery.extend({
    func: function() {
        alert('test');
    }
});
$.func();

Ответ 3

Использует ли он коллекцию, если вы пишете что-то другое, например $('a').myPlugin()? Если это не так, то почему вы помещаете его в $.fn? Возможно, вы хотели ввести его в jQuery.

Если он работает в коллекции, но иногда пустая коллекция имеет смысл, то я думаю, что ваш invocant должен быть $([]) - передача пустого Array в jQuery дает пустую коллекцию; вообще ничего не пропускает, кажется, дает вам коллекцию, содержащую document.