Inhaltsverzeichnis
data部分
AJAX部分
其他细节
Heim Web-Frontend js-Tutorial Eine Einführung in einige verbesserte Details von jQuery

Eine Einführung in einige verbesserte Details von jQuery

Jun 19, 2017 am 11:08 AM
jquery 介绍 改进 Detail

jquery API“>jQuery 1.5 Beta1 ist verfügbar. Diesmal ist es relativ spät (ich weiß nicht einmal, wann 1.5 als Alpha herauskam, es ist nur eine Betaversion). 🎜>

Das größte Update der Version 1.5 ist die vollständige Neufassung von AJAX, die eine stärkere Skalierbarkeit bietet. Aufgrund von Energie- und Platzbeschränkungen wird die Analyse des neuen AJAX jedoch auf ein anderes Mal verschoben die Details.

jQuery._Deferred und jQuery.Deferred

Zuallererst muss ich über diese beiden neuen Dinge sprechen, weil sie als Infrastruktur existieren und ich diese beiden nicht verstehe Einige Probleme können überhaupt nicht erklärt werden.

Erstens ist

eine erweiterte Version von jQuery.Deferred, daher kann der Beginn mit jQuery._Deferred den größten Teil des Problems erklären ? Im wahrsten Sinne des Wortes ist meine erste Reaktion „Lazy Loading“, der erste Buchstabe in Großbuchstaben sollte die Definition von „Typ“ sein, also ist dies wahrscheinlich ein Typ, der „tatsächlich eine Lazy Loading-Funktion bereitstellt“, obwohl dies eine gewisse Bedeutung hat Etwas „Verzögerung“, dieses Ding wird nicht zum Implementieren von Lazy Loading verwendet. jQuery._Deferred ist einfach eine Funktionswarteschlange und seine Funktionen sind wie folgt:

Mehrere Funktionen speichern jQuery._Deferred

  • Führen Sie alle gespeicherten Funktionen zu einem bestimmten Zeitpunkt aus. >

    Nach der Ausführung wird die neu eingegebene Funktion sofort ausgeführt .
  • Fühlt es sich ähnlich an? Ja, die Ready-Funktion in jQuery 1.5 wurde tatsächlich darauf aufgepfropft >
  • stellt die folgende Schnittstelle bereit:
:

Formular, das zum Hinzufügen von Funktionen zur Warteschlange verwendet wird

jQuery._Deferred:

Formular, verwenden Sie
    , um
  • dieses

    Objekt anzugeben, doneGeben Sie Parameter an und rufen Sie alle Funktionen in der Warteschlange auf. Nachdem function(fn1, fn2, …) aufgerufen wurde, wechselt _Deferred in den Status

    isResolved
  • . und zukünftige Aufrufe von
  • speichern die Funktion nicht, sondern rufen die Funktion

    firefunction(context, args)context auf: Entspricht dem Aufruf von , einer vereinfachten Methode argsfiredone: Wird verwendet, um festzustellen, ob der Status „_Deferred“ vorliegt. Weitere Informationen finden Sie in der Erläuterung der vorherigen Funktion

  • resolve: Brechen Sie die gesamte Warteschlange ab, damit die Funktionen in der Warteschlange nicht erneut aufgerufen werden, egal ob sie fire(this, arguments) in der Zukunft ist

    . Schauen wir uns dieses Ding tatsächlich an. Das erste heißt
  • deferred
  • und dient zum Speichern von Funktionen im „normalen“ Zustand namens

    failDeferredisResolved, der zum Speichern von Funktionen im Status „Fehler“ verwendet wird. Gleichzeitig bietet einige neue Schnittstellen: fire

  • : Fügen Sie in der Form

    cancel zu fire und

    hinzu
  • .

jQuery._DeferredjQuery.Deferred: Entspricht der -Funktion von . jQuery.Deferred

  • : Entspricht der

    -Funktion von then. function(done, fail)donedeferredfailfailedDeferred: Entspricht der

    -Funktion von
  • .
  • failfailDeferreddone: Entspricht der

    -Funktion von
  • .
  • fireRejectfailDeferredGleichzeitig wurde fire die Funktion

    abgebrochen.
  • Wofür wird das also verwendet? Es gibt zwei Zustände: „Normal“ und „Fehler“, und es ist leicht vorstellbar ... Ja, es wird für AJAX verwendet. Ich werde es in der nächsten Analyse ausführlich erläutern.

    rejectÄnderungen in jQuery.readyfailDeferredresolveAufgrund der

    -Sache wird die
  • -Funktion von der Funktionswarteschlange abhängig. Die spezifischen Änderungen sind:
  • Original Die Die isRejected-Variable ist kein Array mehr, sondern wird zu einem failDeferred-Objekt. isResolved

    Ursprünglich wurde die Logik zum Aufrufen aller Funktionen in
  • , wenn
DOMContentLoaded

verwendet wurde, jetzt auch in jQuery.Deferred verwendet. Der ursprüngliche Code: cancel

ändert sich erledigt:

jQuery.parseXML-Funktion

jQuery._Deferred hat eine statische Funktion jQuery.ready hinzugefügt, um eine browserkompatible Konvertierung von

String

in XML-Dokumentfunktionalität bereitzustellen. readyListjQuery._DeferredEs gibt viele Logiken für diese Funktion und es gibt nichts Besonderes an jQuery. Sie werden grob in die folgenden zwei Typen unterteilt:

Verwenden Sie für Standardbrowser das -Objekt: readListjQuery._DeferredFür IE verwenden Sie das

-Objekt:
while ( (fn = ready[ i++ ]) ) {       fn.call( document, jQuery ); }
Nach dem Login kopieren
var parser = new ActiveXObject('Microsoft.XMLDOM');   parser.async = 'false';   parser.loadXML(text);   var xml = parser.documentElement;
Nach dem Login kopieren

data部分

添加了jQuery.hasData函数,用于判断一个元素是否有jQuery附加上去的数据。

修改了jQuery.expando的实现,在原来单纯地取当前时间的基础上,添加了一个随机数:

expando = "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( //D/g, "" );
Nach dem Login kopieren

这样保证在同一时间,引入多个jQuery副本,这几个副本之间的expando不会相互冲突,导致元素上的data变得错乱。一般来说,是不会引入多个jQuery副本的,但是使用SealJS等的时候,配置不当的话,也是很容易出现此类问题的。

DOM操作部分

原本的hasClassaddClassremoveClass函数都需要将元素的class属性分隔为数组,在1.4.4版本中,通过/n或/t进行分隔,在1.5中增加了一个/r,用于对应Windows平台下的换行符(/r/n)。

jQuery.fn.attr函数,1.4.4版本中拒绝从TextNode和CommentNode上获取属性,在1.5版本中添加了一个AttributeNode(noteType == 2)。

在1.4.4版本中,jQuery会在页面unload的时候清理掉由jQuery维护的所有DOM事件,这是为了避免IE的内存泄露问题。但是在1.5中这一段代码不见了,不知是出于什么考虑。

对于IE下使用cloneNode复制节点,会将事件也一起复制过来的问题,1.4.4中是采取复制innerHTML的方式给予解决,而在1.5中则采纳了mootools团队提供的方法,使用cloneFixAttribute函数修正该问题。

cloneFixAttribute函数们于jQuery 1.5 beta1源码文件的5388-5438行,处理IE的BUG的原理很简单,当然前端里一些看似简单的东西,都是很难发现的:

  • IE中有个叫clearAttributes的函数,会清除到节点上的所有属性,顺便把和事件相关的<a href="http://www.php.cn/wiki/1449.html" target="_blank">onclick</a>之类的属性也去掉了。在复制出来的节点上调用这个函数,就会把属性清得干干净净。

  • IE中还有一个叫mergeAttributes的函数,把一个节点的属性复制到另一个节点上,但他不会把和事件相关的属性复制过去。所以再把原始节点调用mergeAttributes,把属性重新放回复制出来的节点上,这就相当于起到了去除事件相关属性的作用。

另外cloneFixAttribute函数还处理了非常多IE6-8在cloneNode上的兼容性问题,非常值得详细研究。

AJAX部分

AJAX已经完全重写了,只留下一点边边角角保留着1.4.4版本的风采,这里只抽取一部分进行简单的说明。

原来版本中$.get$.post的实现非常相似,具体来说仅有一个method配置项不同,因此在1.5版本中被合并起来了:

$.each(['get', 'post'], function(i, method) {     $[method] = function() { ... }; });
Nach dem Login kopieren

ajaxSetup函数现在加了一行return this;,可以链式调用了。

serializeArray函数现在统一将value中的换行符替换成Windows的风格(/r/n)。

AJAX的回调函数中,作为参数的对象不再是原生的XMLHTTPRequest,而是jQuery自己封装的称为jXHR的对象,这个对象提供了XMLHTTPRequest的常用接口。

原本对于“请求成功”的浏览器状态码,除200-299以及304外,还有一个1223,来自于IE的一个BUG,会将204的状态码变成1223。现在因为有了jXHR对象,相当于中间多了一层,因此从jXHR对象获取statusCode不会出现1223的情况,已经被变回204了。

jQuery.ajax函数的配置项中多了一个statusCode项,其结构为map,用于指定返回特定状态码时的回调函数,大致形式如下:

jQuery.ajax({       url: 'xxx',     statusCode: {         200: function() { 处理请求成功 },         404: function() { 处理页面未找到 },         503: function() { 处理Service Unavailable }     } });
Nach dem Login kopieren

再添加了这个回调后,jQuery.ajax函数已经有非常多的回调函数,其触发过程如下:

  1. 根据返回的状态码,触发success或者error回调。

  2. 根据状态码,触发对应的statusCode回调。

  3. 触发complete回调。

  4. 触发全局ajaxComplete回调。

  5. 如果此时没有正在执行的AJAX,触发全局ajaxStop回调。

其他细节

入口函数jQuery.fn.init现在多了一个参数,值始终为rootjQuery,用于加速init函数中对rootjQuery变量的查找速度(减少了一层作用域):

// jQuery 1.5 beta1 源码23行 jQuery = function( selector, context ) {       // The jQuery object is actually just the init constructor 'enhanced'     return new jQuery.fn.init( selector, context, rootjQuery ); }
Nach dem Login kopieren

jQuery对象支持继承了,具体的修改是将几处直接调用jQuery的代码改为了对this.constructor的调用:

// 202行:     return this.constructor( context ).find( selector ); // 253行:     var ret = this.constructor(); // 334行: return this.prevObject || this.constructor(null);
Nach dem Login kopieren

同时还提供了jQuery.subclass函数用于创建一个继承自jQuery的类型,由于不是很常用jQuery,更是从来没有用到过需要继承jQuery的情况,因此也不方便说这个功能的作用有多大。

Das obige ist der detaillierte Inhalt vonEine Einführung in einige verbesserte Details von jQuery. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1668
14
PHP-Tutorial
1273
29
C#-Tutorial
1256
24
Wie verwende ich die PUT-Anfragemethode in jQuery? Wie verwende ich die PUT-Anfragemethode in jQuery? Feb 28, 2024 pm 03:12 PM

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

jQuery-Tipps: Ändern Sie schnell den Text aller a-Tags auf der Seite jQuery-Tipps: Ändern Sie schnell den Text aller a-Tags auf der Seite Feb 28, 2024 pm 09:06 PM

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: &lt

Verwenden Sie jQuery, um den Textinhalt aller a-Tags zu ändern Verwenden Sie jQuery, um den Textinhalt aller a-Tags zu ändern Feb 28, 2024 pm 05:42 PM

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:

Was ist Dogecoin? Was ist Dogecoin? Apr 01, 2024 pm 04:46 PM

Dogecoin ist eine Kryptowährung, die auf Internet-Memes basiert, ohne feste Angebotsobergrenze, schnelle Transaktionszeiten, niedrige Transaktionsgebühren und eine große Meme-Community. Zu den Verwendungszwecken gehören kleine Transaktionen, Trinkgelder und wohltätige Spenden. Das unbegrenzte Angebot, die Marktvolatilität und der Status als Scherzmünze bringen jedoch auch Risiken und Bedenken mit sich. Was ist Dogecoin? Dogecoin ist eine Kryptowährung, die auf Internet-Memes und Witzen basiert. Ursprung und Geschichte: Dogecoin wurde im Dezember 2013 von zwei Software-Ingenieuren, Billy Markus und Jackson Palmer, erstellt. Inspiriert vom damals beliebten „Doge“-Meme, einem komischen Foto mit einem Shiba Inu mit gebrochenem Englisch. Funktionen und Vorteile: Unbegrenztes Angebot: Im Gegensatz zu anderen Kryptowährungen wie Bitcoin

Verbesserungen in PHP7: keine undefinierten Fehler mehr Verbesserungen in PHP7: keine undefinierten Fehler mehr Mar 04, 2024 pm 06:15 PM

Verbesserungen in PHP7: Keine undefinierten Fehler mehr. PHP7 ist ein großes Versionsupdate der PHP-Sprache, das viele wichtige Verbesserungen und Optimierungen mit sich bringt. Eine der wesentlichen Verbesserungen besteht darin, dass beim Umgang mit undefinierten Variablen keine undefinierten Fehler mehr auftreten, was den Entwicklern ein besseres Benutzererlebnis bietet. Wenn vor PHP7 undefinierte Variablen im Code verwendet wurden, trat ein undefinierter Fehler auf, um diese Situation zu vermeiden.

Einführung in die Online-Score-Checking-Plattform (bequemes und schnelles Tool zur Score-Abfrage) Einführung in die Online-Score-Checking-Plattform (bequemes und schnelles Tool zur Score-Abfrage) Apr 30, 2024 pm 08:19 PM

Schnelle Abfragetools bieten mehr Komfort für Schüler und Eltern. Mit der Entwicklung des Internets bieten immer mehr Bildungseinrichtungen und Schulen Online-Dienste zur Punkteüberprüfung an. Damit Sie den schulischen Fortschritt Ihres Kindes leicht verfolgen können, werden in diesem Artikel einige häufig verwendete Online-Plattformen zur Notenüberprüfung vorgestellt. 1. Bequemlichkeit – Eltern können die Testergebnisse ihrer Kinder jederzeit und überall über die Online-Ergebnisprüfungsplattform überprüfen. Eltern können die Testergebnisse ihrer Kinder jederzeit bequem überprüfen, indem sie sich auf einem Computer oder Mobiltelefon bei der entsprechenden Online-Ergebnisprüfungsplattform anmelden. Solange eine Internetverbindung besteht, sei es am Arbeitsplatz oder beim Ausgehen, können Eltern den Lernstand ihrer Kinder verfolgen und ihre Kinder gezielt beraten und unterstützen. 2. Mehrere Funktionen – zusätzlich zur Notenabfrage stehen auch Informationen wie Kurspläne und Prüfungstermine zur Verfügung.

Detaillierte Einführung in die Funktionen des Samsung S24ai Detaillierte Einführung in die Funktionen des Samsung S24ai Jun 24, 2024 am 11:18 AM

2024 ist das erste Jahr der KI-Mobiltelefone. Dank der intelligenten KI-Technologie können unsere Mobiltelefone effizienter und bequemer genutzt werden. Kürzlich hat die zu Beginn des Jahres erschienene Galaxy S24-Serie ihr generatives KI-Erlebnis noch einmal verbessert. Werfen wir einen Blick auf die detaillierte Funktionseinführung unten. 1. Umfassende Stärkung der generativen KI. Die Samsung Galaxy S24-Serie hat durch die Stärkung der Galaxy AI viele intelligente Anwendungen hervorgebracht. Diese Funktionen sind tief in Samsung One UI6.1 integriert, sodass Benutzer jederzeit ein komfortables intelligentes Erlebnis erhalten Verbesserung der Leistung von Mobiltelefonen. Zu den Highlights der Galaxy S24-Serie gehört die Sofortsuchfunktion, die Nutzer einfach gedrückt halten müssen

Einführung in die achte Farbwaffe von Neon Abyss Einführung in die achte Farbwaffe von Neon Abyss Mar 31, 2024 pm 03:51 PM

Die achte Farbe ist eine Waffe in Neon Abyss. Viele Spieler möchten etwas über die Ballistik der achten Farbe der Waffe wissen und wissen, wie man mit der Waffenstärke spielt. Werfen wir also einen Blick auf die detaillierte Anleitung zur Flugbahn, Waffenstärke und dem Waffen-Gameplay der achten Farbe von Neon Abyss. Neon Abyss Color 8 Detaillierte Anleitung Waffeneinführung: Die Geheimwaffe des Zauberers! Waffenangriffsgeschwindigkeit: Normal Waffenstärke: Mäßig Waffenspiel: Die Angriffsmethode der achten Farbe besteht aus drei Einzelzielangriffen und dem anschließenden Abfeuern eines Strahls. Ballistische Darstellung:

See all articles