Ich versuche, die Syntax des jquery-Plugins zu verstehen, weil ich zwei Plugins zu einem zusammenführen möchte. Der Blinker, der auch in der Lage sein muss, das Intervall anzuhalten oder mehrmals zu laufen.
Wie auch immer, ist diese Syntax die gleiche wie
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);
});
},
Dies
$.fn.blink = function(options)
{
weil es so aussieht, als ob die erste (ohne =) eine Möglichkeit ist, mehrere Methoden gleichzeitig festzulegen. Ist das richtig? Auch während ich hier bin Was wäre der Grund, die Elemente und eine Logik zum jquery-Objekt hinzuzufügen?
jQuery.extend({
timer: {
global: [],
guid: 1,
dataKey: "jQuery.timer",
(Dies ist aus dem Timer-Plugin)
Antworten:
jQuery.extend wird verwendet, um jedes Objekt mit zusätzlichen Funktionen zu erweitern, aber jQuery.fn.extend wird verwendet, um das jQuery.fn-Objekt zu erweitern, das tatsächlich mehrere Plugin-Funktionen auf einmal hinzufügt (anstatt jede Funktion separat zuzuweisen).
jQuery.extend :
jQuery.fn.extend :
quelle
Verwendung :
$.abc()
. (Kein Selektor erforderlich wie$.ajax()
.)Verwendung :
$('.selector').xyz()
. (Selektor erforderlich wie$('#button').click()
.)Hauptsächlich wird es zur Implementierung verwendet
$.fn.each()
.Ich hoffe, es hilft.
quelle
Tatsächlich gibt es keine außer ihrer Basisreferenz. In der jQuery-Quelle können Sie lesen:
Wie funktioniert es? Die Dokumentation lautet:
Es ist nur eine For-in-Schleife, die Eigenschaften kopiert und mit einem Flag aufgepimpt wird, um verschachtelte Objekte zu rekursieren. Und noch ein Feature:
Wenn die Funktion für sich
jQuery
selbst aufgerufen wird (ohne explizites Ziel), wird der jQuery-Namespace erweitert. Wenn die Funktion aufgerufen wirdjQuery.fn
(ohne explizites Ziel), wird das jQuery-Prototypobjekt erweitert, in dem sich alle (Plugin-) Methoden befinden.quelle
Dieser Blog-Beitrag hat eine schöne Beschreibung:
Zitate:
In der Regel sollten Sie das jQuery-Objekt für Funktionen und das jQuery.fn-Objekt für Methoden erweitern. Auf eine Funktion wird im Gegensatz zu einer Methode nicht direkt vom DOM aus zugegriffen.
quelle
directly from the DOM
bezieht sich auf ein sehr grundlegendes JavaScript-Konzept des Funktionsaufrufs im Vergleich zum Aufruf der Objekteigenschaft / des Prototyps (im jQuery-Wrapper um native DOM-Objekte). Sehen Sie sich das Beispiel an und versuchen Sie, einen Unterschied zu finden, und überlegen Sie, warum Code in Beispielen nicht austauschbar ist.zeigt auf den jQuery.prototype und ermöglicht den Zugriff auf dom-Elemente über "this". Jetzt darfst du das
$(selector).something();
also als Plugin-Funktion wie verwenden$(selector).css();
Fügt dem jQuery-Objekt selbst eine Eigenschaft oder Funktion hinzu, und Sie können "this" nicht für den Dom-Zugriff verwenden. Jetzt können Sie es als verwenden
$.something()
. Dies funktioniert als Utility-Funktion als$.trim()
aber
Ermöglicht das gleichzeitige Hinzufügen von mehr als einer Funktion. Sie können auch zum Zusammenführen von zwei Objektliteralen verwendet werden, falls mehr als ein Objekt bereitgestellt wird.
quelle