jQuery代码优化 遍历篇_jquery
了解了jQuery对DOM进行遍历背后的工作机制,可以在编写代码时有意识地避免一些不必要的重复操作,从而提升代码的性能。本文就从jQuery的遍历机制入手简单探讨一下优化jQuery代码的问题。
jQuery对象栈
jQuery内部维护着一个jQuery对象栈。每个遍历方法都会找到一组新元素(一个jQuery对象),然后jQuery会把这组元素推入到栈中。而每个jQuery对象都有三个属性:context、selector和prevObject,其中的prevObject属性就指向这个对象栈中的前一个对象,而通过这个属性可以回溯到最初的DOM元素集。
jQuery为我们操作这个内部对象栈提供了两个非常有用的方法:
.end()
.andSelf()
调用第一个方法只是简单地弹出一个对象(结果就是回到前一个jQuery对象)。第二个方法更有意思,调用它会在栈中回溯一个位置,然后把两个位置上的元素集组合起来,并把这个新的、组合之后的元素集推入栈的上方。
利用这个DOM元素栈可以减少重复的查询和遍历的操作,而减少重复操作也正是优化jQuery代码性能的关键所在。
优化示例
下面是一个函数(省略了前后代码),用于实现表格行条纹效果:
function stripe() {
$('#news').find('tr.alt').removeClass('alt');
$('#news tbody').each(function() {
$(this).children(':visible').has('td')
.filter(':group(3)').addClass('alt');
});
}
stripe()函数两次使用了ID选择符#news查找元素:一次是为了从带有alt类的行中删除该类,另一次是为了给新选中的行添加这个类。
优化这个函数的方法有两个,一是连缀。
连缀
连缀优化利用的就是jQuery的内部对象栈和.end()方法。优化后的代码如下:
function stripe() {
$('#news').
find('tr.alt').removeClass('alt').end()
find('tbody').each(function() {
$(this).children(':visible').has('td')
.filter(':group(3)').addClass('alt');
});
}
第一次调用.find()会把表格行推到栈上,然后的.end()方法则把这些行弹出,从而让下一次调用.find()仍然是在#news表格上执行操作。这样就把两次选择符查找减少为一次。
另一个优化方法是缓存。
缓存
所谓缓存,在这里就是把之前操作的结果保存起来,以便将来重用。优化后的代码如下:
var $news = $('#news');
function stripe() {
$news.find('tr.alt').removeClass('alt');
$news.find('tbody').each(function() {
$(this).children(':visible').has('td')
.filter(':group(3)').addClass('alt');
});
}
与连缀的方法相比,缓存方式稍嫌冗长,因为额外创建了一个用于保存jQuery对象的变量。但从另一个角度来看,这种方式在代码中可以实现对选中元素的两次操作完全分离,而这也许可以满足我们其他情况下的需求。同样,因为可以把选中的元素保存在stripe()函数之外,也就避免了每次调用函数时重复查询选择符的操作。
结论
利用jQuery的内部对象栈和缓存,可以减少重复的DOM查询及遍历,从而提高脚本执行速度。
因为根据ID在页面中选择元素速度极快,以上两个例子在优化前后不会有明显的性能差异。在实际编码中,应该选择可读性最好、最容易维护的方式。如果真的遇到了性能瓶颈,以上优化技术都可以起到立竿见影的效果。
(注:本文基于《jQuery基础教程(第3版)》相关章节内容编撰而成。)

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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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



Java ist eine beliebte Programmiersprache mit leistungsstarken Funktionen zur Dateiverarbeitung. In Java ist das Durchsuchen eines Ordners und das Abrufen aller Dateinamen ein üblicher Vorgang, der uns dabei helfen kann, Dateien in einem bestimmten Verzeichnis schnell zu finden und zu verarbeiten. In diesem Artikel wird erläutert, wie eine Methode zum Durchlaufen eines Ordners und zum Abrufen aller Dateinamen in Java implementiert wird, und es werden spezifische Codebeispiele bereitgestellt. 1. Verwenden Sie die rekursive Methode, um den Ordner zu durchlaufen. Die rekursive Methode ist eine Möglichkeit, sich selbst aufzurufen und den Ordner effektiv zu durchlaufen.

Als eine der beliebtesten Programmiersprachen der Welt ist Java für viele Unternehmen und Entwickler zur Sprache der Wahl geworden. Allerdings ist Code-Refactoring für die Aufrechterhaltung der Codequalität und Entwicklungseffizienz von entscheidender Bedeutung. Aufgrund seiner Komplexität kann es mit der Zeit immer schwieriger werden, Java-Code zu warten. In diesem Artikel wird erläutert, wie Sie Java-Code umgestalten, um die Codequalität und Wartbarkeit zu verbessern. Verstehen Sie die Prinzipien des Refactorings. Der Zweck des Java-Code-Refactorings besteht darin, die Struktur, Lesbarkeit und Wartbarkeit des Codes zu verbessern, und nicht einfach nur „den Code zu ändern“. Weil

Beispiel für die Verwendung der PHPglob()-Funktion: Alle Dateien in einem bestimmten Ordner durchsuchen Bei der PHP-Entwicklung ist es häufig erforderlich, alle Dateien in einem bestimmten Ordner zu durchsuchen, um einen Stapelvorgang oder das Lesen von Dateien zu implementieren. Um diese Anforderung zu erfüllen, wird die glob()-Funktion von PHP verwendet. Die Funktion glob() kann die Pfadinformationen aller Dateien im angegebenen Ordner abrufen, die die Bedingungen erfüllen, indem sie ein Platzhalter-Übereinstimmungsmuster angibt. In diesem Artikel zeigen wir, wie Sie mit der Funktion glob() alle Dateien in einem bestimmten Ordner durchlaufen

Zu den Methoden zur Programmleistungsoptimierung gehören: Algorithmusoptimierung: Wählen Sie einen Algorithmus mit geringerer Zeitkomplexität und reduzieren Sie Schleifen und bedingte Anweisungen. Auswahl der Datenstruktur: Wählen Sie geeignete Datenstrukturen basierend auf Datenzugriffsmustern aus, z. B. Nachschlagebäume und Hash-Tabellen. Speicheroptimierung: Vermeiden Sie die Erstellung unnötiger Objekte, geben Sie nicht mehr verwendeten Speicher frei und verwenden Sie die Speicherpooltechnologie. Thread-Optimierung: Identifizieren Sie Aufgaben, die parallelisiert werden können, und optimieren Sie den Thread-Synchronisierungsmechanismus. Datenbankoptimierung: Erstellen Sie Indizes, um den Datenabruf zu beschleunigen, optimieren Sie Abfrageanweisungen und verwenden Sie Cache- oder NoSQL-Datenbanken, um die Leistung zu verbessern.

Codeoptimierungstechniken in der PHP-Verarbeitung mit hoher Parallelität Mit der rasanten Entwicklung des Internets ist die Verarbeitung mit hoher Parallelität zu einem wichtigen Thema bei der Entwicklung von Webanwendungen geworden. In der PHP-Entwicklung ist die Optimierung des Codes zur Bewältigung hoher gleichzeitiger Anforderungen zu einem schwierigen Problem geworden, das Programmierer lösen müssen. In diesem Artikel werden einige Codeoptimierungstechniken in der PHP-Verarbeitung mit hoher Parallelität vorgestellt und Codebeispiele zur Veranschaulichung hinzugefügt. Angemessene Verwendung des Caches. In Situationen mit hoher Parallelität führt ein häufiger Zugriff auf die Datenbank zu einer übermäßigen Systemlast und einem relativ langsamen Zugriff auf die Datenbank. Deshalb können wir

1. Codeoptimierung, um die Verwendung zu vieler Sicherheitsanmerkungen zu vermeiden: Versuchen Sie in Controller und Service, die Verwendung von @PreAuthorize und @PostAuthorize sowie anderen Anmerkungen zu reduzieren, um die Ausführungszeit des Codes zu verlängern. Abfrageanweisungen optimieren: Bei Verwendung von springDataJPA kann die Optimierung von Abfrageanweisungen die Datenbankabfragezeit verkürzen und dadurch die Systemleistung verbessern. Sicherheitsinformationen zwischenspeichern: Durch das Zwischenspeichern einiger häufig verwendeter Sicherheitsinformationen kann die Anzahl der Datenbankzugriffe verringert und die Reaktionsgeschwindigkeit des Systems verbessert werden. 2. Verwenden Sie Indizes zur Datenbankoptimierung: Durch das Erstellen von Indizes für häufig abgefragte Tabellen kann die Abfragegeschwindigkeit der Datenbank erheblich verbessert werden. Protokolle und temporäre Tabellen regelmäßig bereinigen: Protokolle und temporäre Tabellen regelmäßig bereinigen

Konzeptionelle Unterschiede: Iterator: Iterator ist eine Schnittstelle, die einen Iterator darstellt, der Werte aus einer Sammlung erhält. Es bietet Methoden wie MoveNext(), Current() und Reset(), mit denen Sie die Elemente in der Sammlung durchlaufen und das aktuelle Element bearbeiten können. Iterable: Iterable ist ebenfalls eine Schnittstelle, die ein iterierbares Objekt darstellt. Es stellt die Methode Iterator() bereit, die ein Iterator-Objekt zurückgibt, um das Durchlaufen der Elemente in der Sammlung zu erleichtern. Verwendung: Iterator: Um Iterator zu verwenden, müssen Sie zuerst ein Iterator-Objekt abrufen und dann die Methode MoveNext() aufrufen, um zum nächsten zu wechseln

So verwenden Sie das Betriebssystemmodul zum Durchlaufen von Dateien in einem Verzeichnis in Python3.x. In Python können wir das Betriebssystemmodul zum Bearbeiten von Dateien und Verzeichnissen verwenden. Das OS-Modul ist ein wichtiges Modul in der Python-Standardbibliothek und bietet viele betriebssystembezogene Funktionen. In diesem Artikel erklären wir, wie Sie mit dem OS-Modul alle Dateien in einem Verzeichnis durchlaufen. Zuerst müssen wir das OS-Modul importieren: importos Als nächstes können wir die Funktion os.walk() verwenden, um das Verzeichnis zu durchsuchen.
