Różnica między jQuery.extend i jQuery.fn.przedłużyć?

Próbuję zrozumieć składnię wtyczki jquery, ponieważ chcę połączyć dwie wtyczki w jeden. Migacz, który również musi być w stanie zatrzymać interwał de lub uruchomić kilka razy.

Anyway, czy ta składnia jest taka sama jak

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);
        });
    },

To

$.fn.blink = function(options)
    {

Ponieważ wygląda na to, że pierwszy (Bez =) jest sposobem na ustawienie wielu metod jednocześnie. Czy to prawda? Również, gdy tu jestem Jaki byłby powód, aby dodać elementy i trochę logiki do jquery obiekt?

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

(to jest z wtyczki timer)

Dzięki, Richard.]}
Author: Ned Batchelder, 2010-01-02

5 answers

JQuery.extend służy do rozszerzenia dowolnego obiektu o dodatkowe funkcje, ale jQuery.fn.extend służy do rozszerzenia jQuery.obiekt fn, który w rzeczywistości dodaje kilka funkcji wtyczki za jednym zamachem (zamiast przypisywania każdej funkcji osobno).

JQuery.extend :

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

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

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

JQuery.fn.extend :

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

// creates 2 plugin functions (x and y)
 85
Author: Philippe Leybaert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-02 10:36:59
jQuery.extend({
    abc: function(){
        alert('abc');
    }
});

Użycie: $.abc(). (Nie jest wymagany selektor jak $.ajax().)

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

Użycie: $('.selector').xyz(). (Selektor wymagany jak $('#button').click().)

Głównie służy do implementacji $.fn.each().

Mam nadzieję, że to pomoże.
 64
Author: Dinesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-24 16:33:03

Różnica między jQuery.extend i jQuery.fn.przedłużyć?

Właściwie, nie ma żadnego poza ich bazowym odniesieniem. W źródle jQuery możesz przeczytać:

jQuery.extend = jQuery.fn.extend = function() { … };
Jak to działa? dokumentacja brzmi:

Scala zawartość dwóch lub więcej obiektów razem w pierwszy obiekt.

To tylko for-in-loop, który kopiuje właściwości, pimpowane flagą, aby rekurencyjnie zagnieżdżać obiekty. I inni cecha:

Jeśli do $.extend() zostanie dostarczony tylko jeden argument, oznacza to, że argument docelowy został pominięty

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

Więc jeśli funkcja jest wywołana na jQuery (bez jawnego celu), rozszerzy przestrzeń nazw jQuery. A jeśli funkcja jest wywołana na jQuery.fn (bez jawnego celu), rozszerzy obiekt prototypowy jQuery, w którym znajdują się wszystkie metody (wtyczki).

 18
Author: Bergi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-11 20:04:05

Ten wpis na blogu ma ładny opis:

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

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

Cytaty:

ogólnie rzecz biorąc, należy rozszerzyć obiekt jQuery o funkcje i jQuery.obiekt fn dla metod. Funkcja, w przeciwieństwie do metody, nie jest dostępna bezpośrednio z DOM.

 13
Author: gavenkoa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-13 12:10:31
$.fn.something= function{};

Wskazuje na jQuery.prototype i umożliwia dostęp do elementów dom poprzez "this". Teraz u może używać $(selector).something(); więc to działa jako funkcja plugin jak $(selector).css();

$.something = function{};

Dodaje właściwość lub funkcję do samego obiektu jQuery i u nie można użyć "this" dla dostępu do dom Teraz u może używać go jako $.something(); działa to jako funkcja użytkowa jako $.trim()

Ale

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

Umożliwia dodanie więcej niż 1 funkcji w tym samym czasie.Mogą być również używane do łączenia dwóch literałów obiektów w przypadku, gdy zapewniamy więcej niż jeden obiekt.

 7
Author: Shishir Arora,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-18 03:20:47