Erfahren Sie mehr über Rückrufe von jQuery-Quellcode
Dieser Artikel stellt hauptsächlich das Erlernen von Rückrufen des jQuery-Quellcodes vor. Er hat einen gewissen Referenzwert. Jetzt können Freunde, die ihn benötigen, darauf zurückgreifen.
und von jQuery werden asynchron über Rückrufe implementiert, und der Kern ihrer Implementierung ist ajax
. deferred
Callbacks
Verwendungsmethode
Um sie zu verwenden, müssen Sie zunächst ein neues Instanzobjekt erstellen. Beim Erstellen können Sie den Parameter
übergeben, um Einschränkungen für Rückrufobjekte anzugeben. Die optionalen Werte lauten wie folgt.flags
- : Auslösen stoppen, wenn die Funktion in der Rückruffunktionswarteschlange zurückkehrt
stopOnFalse
false
- : Die Rückruffunktionswarteschlange kann nur einmal ausgelöst werden
once
- : Den in der letzten Triggerwarteschlange übergebenen Wert aufzeichnen. Die neu zur Warteschlange hinzugefügte Funktion verwendet den aufgezeichneten Wert als Parameter und wird sofort ausgeführt.
memory
- : Die Funktionen in der Funktionswarteschlange sind alle eindeutig
unique
var cb = $.Callbacks('memory'); cb.add(function(val){ console.log('1: ' + val) }) cb.fire('callback') cb.add(function(val){ console.log('2: ' + val) }) // console输出 1: callback 2: callback
Nach dem Login kopieren
Callbacks
- : Fügen Sie der Rückrufwarteschlange eine Funktion hinzu, die eine Funktion oder ein Array von Funktionen sein kann
add
- : Entfernen Sie es aus der Rückrufwarteschlange. Funktion angeben
remove
- : Bestimmen Sie, ob eine bestimmte Funktion in der Rückrufwarteschlange vorhanden ist
has
- : Löschen Sie die Rückrufwarteschlange
empty
- : Deaktivieren Sie das Hinzufügen von Funktionen und Triggerwarteschlangen, löschen Sie die Rückrufwarteschlange und den zuletzt übergebenen Wert
disable
- : Bestimmen Sie, ob das Rückrufobjekt deaktiviert wurde
disabled
- : Deaktivieren
. Wenn der Speicher nicht leer ist, wird das Hinzufügen gleichzeitig ungültig
lock
fire
- : Bestimmen Sie, ob es aufgerufen wird
locked
lock
- : Übergeben Sie
und Parameter, Trigger-Warteschlange
fireWith
context
- : Übergeben Sie das Parameter-Triggerobjekt,
ist die Methode des Rückrufobjekts
fire
context
Quellcodeanalyse
implementiert Objekt mithilfe der von $.Callback()
bereitgestellten Methoden. Dies hat den Vorteil, dass sichergestellt wird, dass es außer self
keine andere Möglichkeit gibt, den Status und die Warteschlange des Rückrufobjekts zu ändern. self
self
Unter diesen ist self
der Index der aktuellen Triggerfunktion in der Warteschlange,
zeichnet die Parameter des letzten Triggers auf und wird übergeben, wenn die Das Callback-Objekt wird instanziiert. firingIndex
Es wird verwendet, wenn list
den Kontext und die eingehenden Parameter speichert, wenn jeder Callback ausgeführt wird. memory
ist eigentlich memory
und ruft intern queue
die in self.fire(args)
definierte lokale Funktion self.fireWith(this,args)
auf. self.fireWith
... // 以下变量和函数 外部无法修改,只能通过self暴露的方法去修改和访问 var // Flag to know if list is currently firing firing, // Last fire value for non-forgettable lists // 保存上一次触发callback的参数,调用add之后并用该参数触发 memory, // Flag to know if list was already fired fired, // Flag to prevent firing // locked==true fire无效 若memory非空则同时add无效 locked, // Actual callback list // callback函数数组 list = [], // Queue of execution data for repeatable lists // 保存各个callback执行时的context和传入的参数 queue = [], // Index of currently firing callback (modified by add/remove as needed) // 当前正触发callback的索引 firingIndex = -1, // Fire callbacks fire = function() { ... }, // Actual Callbacks object self = { // Add a callback or a collection of callbacks to the list add: function() { ... }, ... // Call all callbacks with the given context and arguments fireWith: function( context, args ) { if ( !locked ) { args = args || []; args = [ context, args.slice ? args.slice() : args ]; // :前为args是数组,:后是string queue.push( args ); if ( !firing ) { fire(); } } return this; }, // Call all the callbacks with the given arguments fire: function() { self.fireWith( this, arguments ); return this; }, ... }
Callbacks
Fügen Sie über fire
Funktionen zur Rückrufwarteschlange hinzu. Der Code lautet wie folgt. Stellen Sie zunächst fest, ob nicht ausgelöst wird. Wenn ja, verschieben Sie an das Ende der Rückrufwarteschlange und speichern Sie self.add
. Verwenden Sie dann den Funktionsausdruck für die sofortige Ausführung, um die Add-Funktion zu implementieren, die eingehenden Parameter in der Funktion zu durchlaufen und zu bestimmen, ob sie nach der Typbeurteilung zur Warteschlange hinzugefügt werden soll. Wenn das Rückrufobjekt über die Markierung memory
verfügt, ist dies ebenfalls erforderlich um zu beurteilen, ob sich die Funktion in der Warteschlange befindet. Existiert sie bereits? Wenn das Rückrufobjekt die Markierung fireIndex
hat, wird memory
nach Abschluss des Hinzufügens ausgelöst, um die neu hinzugefügte Funktion auszuführen. Die Methoden unique
add: function() { if ( list ) { // If we have memory from a past run, we should fire after adding // 如果memory非空且非正在触发,在queue中保存memory的值,说明add后要执行fire // 将firingIndex移至list末尾 下一次fire从新add进来的函数开始 if ( memory && !firing ) { firingIndex = list.length - 1; queue.push( memory ); } ( function add( args ) { jQuery.each( args, function( _, arg ) { // 传参方式为add(fn)或add(fn1,fn2) if ( jQuery.isFunction( arg ) ) { /** * options.unique==false * 或 * options.unique==true&&self中没有arg */ if ( !options.unique || !self.has( arg ) ) { list.push( arg ); } } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { // 传参方式为add([fn...]) 递归 // Inspect recursively add( arg ); } } ); } )( arguments ); //arguments为参数数组 所以add的第一步是each遍历 //添加到list后若memory真则fire,此时firingIndex为回调队列的最后一个函数 if ( memory && !firing ) { fire(); } } return this; }
memory
fire
und rufen tatsächlich die lokale Funktion auf, und der Code lautet wie folgt. Bei Auslösung müssen fire
und fireWith
aktualisiert werden, um anzuzeigen, dass es ausgelöst wurde und ausgelöst wird. Führen Sie die Funktionen in der Warteschlange über eine for-Schleife aus. Nachdem Sie die Schleife beendet haben, aktualisieren Sie fire
auf -1, um anzuzeigen, dass der nächste Trigger bei der ersten Funktion in der Warteschlange beginnt. Durchlaufen Sie das in fired
aktualisierte firing
. firingIndex
ist das Array, das das Array speichert. Das erste Element jedes Arrays ist fireWith
und das zweite Element ist das Parameterarray. Beim Ausführen der Funktion muss überprüft werden, ob queue
zurückgegeben wird und das Callback-Objekt die Markierung queue
aufweist. Wenn ja, beenden Sie die Auslösung. context
// Fire callbacks fire = function() { // Enforce single-firing // 执行单次触发 locked = locked || options.once; // Execute callbacks for all pending executions, // respecting firingIndex overrides and runtime changes // 标记已触发和正在触发 fired = firing = true; // 循环调用list中的回调函数 // 循环结束之后 firingIndex赋-1 下一次fire从list的第一个开始 除非firingIndex被修改过 // 若设置了memory,add的时候会修改firingIndex并调用fire // queue在fireWith函数内被更新,保存了触发函数的context和参数 for ( ; queue.length; firingIndex = -1 ) { memory = queue.shift(); while ( ++firingIndex < list.length ) { // Run callback and check for early termination // memory[0]是content memory[1]是参数 if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && options.stopOnFalse ) { // Jump to end and forget the data so .add doesn't re-fire // 当前执行函数范围false且options.stopOnFalse==true 直接跳至list尾 终止循环 firingIndex = list.length; memory = false; } } } // 没设置memory时不保留参数 // 设置了memory时 参数仍保留在其中 // Forget the data if we're done with it if ( !options.memory ) { memory = false; } firing = false; // Clean up if we're done firing for good if ( locked ) { // Keep an empty list if we have data for future add calls if ( memory ) { list = []; // Otherwise, this object is spent } else { list = ""; } } },
false
stopOnFalse
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Lernen aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website. Verwandte Empfehlungen:
Einführung in die asynchrone for-Schleife von js
jQuery-Ajax fordert Json-Daten an und lädt sie auf die Startseite
Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über Rückrufe von jQuery-Quellcode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Detaillierte Erläuterung der jQuery-Referenzmethode: Kurzanleitung jQuery ist eine beliebte JavaScript-Bibliothek, die häufig in der Website-Entwicklung verwendet wird. Sie vereinfacht die JavaScript-Programmierung und bietet Entwicklern umfangreiche Funktionen und Features. In diesem Artikel wird die Referenzmethode von jQuery ausführlich vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern einen schnellen Einstieg zu erleichtern. Einführung in jQuery Zuerst müssen wir die jQuery-Bibliothek in die HTML-Datei einführen. Es kann über einen CDN-Link eingeführt oder heruntergeladen werden

Wie verwende ich die PUT-Anfragemethode in jQuery? In jQuery ähnelt die Methode zum Senden einer PUT-Anfrage dem Senden anderer Arten von Anfragen, Sie müssen jedoch auf einige Details und Parametereinstellungen achten. PUT-Anfragen werden normalerweise zum Aktualisieren von Ressourcen verwendet, beispielsweise zum Aktualisieren von Daten in einer Datenbank oder zum Aktualisieren von Dateien auf dem Server. Das Folgende ist ein spezifisches Codebeispiel, das die PUT-Anforderungsmethode in jQuery verwendet. Stellen Sie zunächst sicher, dass Sie die jQuery-Bibliotheksdatei einschließen. Anschließend können Sie eine PUT-Anfrage senden über: $.ajax({u

Wie entferne ich das Höhenattribut eines Elements mit jQuery? Bei der Front-End-Entwicklung müssen wir häufig die Höhenattribute von Elementen manipulieren. Manchmal müssen wir möglicherweise die Höhe eines Elements dynamisch ändern, und manchmal müssen wir das Höhenattribut eines Elements entfernen. In diesem Artikel wird erläutert, wie Sie mit jQuery das Höhenattribut eines Elements entfernen, und es werden spezifische Codebeispiele bereitgestellt. Bevor wir jQuery zum Betreiben des Höhenattributs verwenden, müssen wir zunächst das Höhenattribut in CSS verstehen. Das Höhenattribut wird verwendet, um die Höhe eines Elements festzulegen

Titel: jQuery-Tipps: Ändern Sie schnell den Text aller Tags auf der Seite. In der Webentwicklung müssen wir häufig Elemente auf der Seite ändern und bedienen. Wenn Sie jQuery verwenden, müssen Sie manchmal den Textinhalt aller a-Tags auf der Seite gleichzeitig ändern, was Zeit und Energie sparen kann. Im Folgenden wird erläutert, wie Sie mit jQuery den Text aller Tags auf der Seite schnell ändern können, und es werden spezifische Codebeispiele angegeben. Zuerst müssen wir die jQuery-Bibliotheksdatei einführen und sicherstellen, dass der folgende Code in die Seite eingefügt wird: <

Titel: Verwenden Sie jQuery, um den Textinhalt aller Tags zu ändern. jQuery ist eine beliebte JavaScript-Bibliothek, die häufig zur Verarbeitung von DOM-Operationen verwendet wird. Bei der Webentwicklung müssen wir häufig den Textinhalt des Link-Tags (eines Tags) auf der Seite ändern. In diesem Artikel wird erläutert, wie Sie mit jQuery dieses Ziel erreichen, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir die jQuery-Bibliothek in die Seite einführen. Fügen Sie den folgenden Code in die HTML-Datei ein:

jQuery ist eine beliebte JavaScript-Bibliothek, die häufig zur DOM-Manipulation und Ereignisbehandlung in Webseiten verwendet wird. In jQuery wird die Methode eq() verwendet, um Elemente an einer bestimmten Indexposition auszuwählen. Die spezifischen Verwendungs- und Anwendungsszenarien sind wie folgt. In jQuery wählt die Methode eq() das Element an einer angegebenen Indexposition aus. Indexpositionen beginnen bei 0 zu zählen, d. h. der Index des ersten Elements ist 0, der Index des zweiten Elements ist 1 und so weiter. Die Syntax der eq()-Methode lautet wie folgt: $("s

Wie kann man feststellen, ob ein jQuery-Element ein bestimmtes Attribut hat? Wenn Sie jQuery zum Betreiben von DOM-Elementen verwenden, stoßen Sie häufig auf Situationen, in denen Sie feststellen müssen, ob ein Element ein bestimmtes Attribut hat. In diesem Fall können wir diese Funktion einfach mit Hilfe der von jQuery bereitgestellten Methoden implementieren. Im Folgenden werden zwei häufig verwendete Methoden vorgestellt, um festzustellen, ob ein jQuery-Element über bestimmte Attribute verfügt, und um spezifische Codebeispiele anzuhängen. Methode 1: Verwenden Sie die Methode attr() und den Operator typeof //, um zu bestimmen, ob das Element ein bestimmtes Attribut hat

jQuery ist eine beliebte JavaScript-Bibliothek, die häufig in der Webentwicklung verwendet wird. Während der Webentwicklung ist es häufig erforderlich, mithilfe von JavaScript dynamisch neue Zeilen zu Tabellen hinzuzufügen. In diesem Artikel wird erläutert, wie Sie mit jQuery neue Zeilen zu einer Tabelle hinzufügen, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir die jQuery-Bibliothek in die HTML-Seite einführen. Die jQuery-Bibliothek kann über den folgenden Code in das Tag eingeführt werden:
