Разница между jQuery.расширить и jQuery.сноска.продлить?


Я пытаюсь понять синтаксис плагина jquery, потому что я хочу объединить два плагина в один. Мигалка, которая также должна быть в состоянии остановить интервал de или запустить несколько раз.

в любом случае, является ли этот синтаксис таким же, как

jQuery.fn.extend({
    everyTime: function(interval, label, fn, times) {
        return this.each(function() {
            jQuery.timer.add(this, interval, label, fn, times);
        });
    },
    oneTime: function(interval, label, fn) {
        return this.each(function() {
            jQuery.timer.add(this, interval, label, fn, 1);
        });
    },

этой

$.fn.blink = function(options)
    {

потому что это выглядит как первый(Без =) это способ установить несколько методов сразу. Это правда? Также пока я здесь Что было бы причиной добавить элементы и некоторые логика для объекта jquery?

jQuery.extend({
    timer: {
        global: [],
        guid: 1,
        dataKey: "jQuery.timer",

(это из плагина таймера)

- спасибо, Ричард

5 76

5 ответов:

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

jQuery.расширить:

var obj = { x: function() {} }

jQuery.extend(obj, { y: function() {} });

// now obj is an object with functions x and y

jQuery.сноска.расширить:

jQuery.fn.extend( {
        x: function() {},
        y: function() {}
});

// creates 2 plugin functions (x and y)
jQuery.extend({
    abc: function(){
        alert('abc');
    }
});

использование: $.abc(). (Селектор не требуется, как $.ajax().)

jQuery.fn.extend({
    xyz: function(){
        alert('xyz');
    }
});

использование: $('.selector').xyz(). (Селектор требуется как $('#button').click().)

в основном он используется для реализации $.fn.each().

Я надеюсь, что это помогает.

разница между jQuery.расширить и jQuery.сноска.продлить?

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

jQuery.extend = jQuery.fn.extend = function() { … };

так как же это работает? Элемент документация гласит:

сливается содержимое двух или более объектов вместе в первый объект.

это просто for-in-loop, который копирует свойства, pimped up with a флаг для рекурсии вложенных объектов. И еще одна особенность:

если только один аргумент, поставляемые в $.extend(), это означает, что целевой аргумент был опущен

 // then the following will happen:
 target = this;

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

этот блог есть хорошее описание:

$.fn.extend({
myMethod: function(){...}
});
//jQuery("div").myMethod();

$.extend({
myMethod2: function(){...}
});
//jQuery.myMethod2();

цитаты:

как правило, вы должны расширить объект jQuery для функций и jQuery.объект Fn для методов. Функция, в отличие от метода, не доступна непосредственно из DOM.

$.fn.something= function{};

указывает на jQuery.прототип и позволяет получить доступ к элементам dom через "это". Теперь вы можете использовать $(selector).something(); Так что это работает как функция плагина, как $(selector).css();

$.something = function{};

добавляет свойство или функцию к самому объекту jQuery, и u не может использовать "это" для доступа dom Теперь вы можете использовать его как $.something(); это работает как функция полезности как $.trim()

но

$.fn.extend({function1(), function2()}) and  $.extend({function1(), function2()}) 

позволяет добавлять более 1 функции одновременно.Также их можно использовать для слияния двух объектные литералы в случае, если мы предоставляем более одного объекта.