расширение функциональности jQuery по вариациям

0

Я понимаю, что я могу расширить jQuery в двух формах:

1)

jQuery.fn.extend({
    variation1: function(){
        ...           
    }
});

I use this like $(selector).variation1();

2)

и пользовательская функция

jQuery.variation2 = {
    something: function(){
        var execute = function(){
            ...
        }
    }
}

I use this like $.variation2.something()  

Мои вопросы:

  1. В первом случае мне не удалось вызвать функции без селектора; этот код вызвал ошибки $.variation1(); Это верно? смысл, есть ли способ вызвать эти функции без селектора элементов?
  2. Во втором случае, как я мог инициализировать вариант2 с помощью опций? Причина, по которой я спрашиваю об этом, заключается в том, что в MooTools при создании класса мы можем инициализировать класс следующим образом:

var jsclass= new Class ({Реализации: [Параметры], опции: {}, initialize: function (options) {this.setOptions(options);}});

мы называем это, и инициализируем с помощью пользовательских параметров, таких как

новый jsClass ({option1: this, option2: that})

Таким образом, в примере MooTools экземпляр класса по умолчанию выполняет опции. Возвращаясь к вопросу, есть ли способ сделать подобное в jQuery?

заранее спасибо

  • 2
    Один зависит от экземпляра jQuery, а другой - нет. Используйте то, что наиболее удобно для каждой ситуации. Это похоже на "public" против "static" метода.
  • 0
    elclanrs очень интересно. Помогите мне уточнить: если PUBLIC, я могу использовать его везде, где есть библиотека jQuery? как на веб-странице с определенным jQuery, затем вызовите $ (селектор) .variation1 (); STATIC, я могу использовать только внутри функциональных скобок, которые обернуть это определение? как jQuery (документ) .ready (function ($) {jQuery.variation2 = {...} $ .variation2.comething () ...}); а снаружи нет?
Показать ещё 1 комментарий
Теги:

1 ответ

0
Лучший ответ

Эти два варианта различны, как вы заметили. jQuery.fn предоставляет набор функций, которые применяются к объекту QuerySet jQuery (результат применения селектора jQuery). jQuery.* можно просто рассматривать как глобальные статические объекты, включая (иногда) функции, доступные для всех, у кого есть доступ к объекту jQuery.

Чтобы инициализировать вариант 2, я бы сделал что-то вроде:

jQuery.variation2 = (function() {
    var a = ...;
    var b = ...; // other initialization
    return {
        something: function() {
            ...
        },  ...
    };
})();

Вы можете использовать блокировки аналогичным образом, чтобы обеспечить инициализированный код.

  • 0
    Итак, как мне передать аргумент для установки переменных?
  • 0
    Ах, я думал, что вы ищете место, где будет выполняться код инициализации. Вы могли бы вернуть методы getter / setter / init как часть объекта { ... } вы возвращаете, я полагаю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню