Heim Web-Frontend js-Tutorial 高效的获取当前元素是父元素的第几个子元素_javascript技巧

高效的获取当前元素是父元素的第几个子元素_javascript技巧

May 16, 2016 pm 05:19 PM
untergeordnetes Element übergeordnetes Element

例如处理事件的时候,有时候需要知道当前点击的是第几个子节点,而HTML DOM本身并没有直接提供相应的属性,需要自己来计算。

从一个索引序号,很容易得到该索引对应的子节点或者子元素,直接用parentNode.childNodes[index] 或 parentNode.children[index] 就行。

但反过来,已知一个节点或元素对象,要知道它的索引序号则没有那么直接了。

一些特殊的元素,HTML DOM有对应的属性表示其索引序号,主要是表格的TD 和 TR 元素。

表格单元格TD元素有 cellIndex 属性。

表格行TR元素有rowIndex属性。

如果你的处理目标刚好就是表格,则优先使用这两个属性。

但一般的节点或元素并没有 childNodeIndex 或者 childElementIndex 之类的属性。

解决方案主要分为两类:

一、预先计算并缓存节点的索引号(可以存在节点属性或者js变量中)。

二、实时计算,需要遍历部分节点。

应用中,可根据不同的实际情况,选用上述两类方案之一。

适用方案一的情形:

当DOM结构不会变化,并且需要频繁的获取个别节点的索引,可采用方案一。

优点是后续读取快,缺点是初始化需要开销,DOM结构变化后需要重新初始化。

适用方案二的情形:

DOM结构可能会变化,并且不是特别频繁的获取个别节点的索引,可采用方案二。

优点是不受DOM结构变化的影响,不会污染DOM结构,没有初始化开销。缺点是不适合高频率调用。

一般而言,采用方案二是更好的,因为通常DOM树规模是比较有限的,一轮的循环并不会导致显著降低整体性能,而其优点则是显著的。

对于IE浏览器,则有更直接的方法。

从IE4到IE11,都有sourceIndex属性,这个属性表示了元素在DOM树的顺序,比较元素和父元素的sourceIndex的差值就很容易知道元素是第几个子元素了。

我写了一段函数来区分处理,在IE下采用sourceIndex高效判断,非IE则采用一般遍历。

复制代码 代码如下:

function getChildrenIndex(ele){
//IE is simplest and fastest
if(ele.sourceIndex){
return ele.sourceIndex - ele.parentNode.sourceIndex - 1;
}
//other browsers
var i=0;
while(ele = ele.previousElementSibling){
i++;
}
return i;
}

上面的函数只是计算元素Element,也就是nodeType为1的节点,文本节点、注释节点等将不被统计。如果需要计算所有节点在内,则不能适用sourceIndex,因为该属性只针对Element. previousElementSibling也要相应的改为previousSibling. 那就要写成如下的函数了:
复制代码 代码如下:

function getNodeIndex(node){
var i=0;
while(ele = ele.previousSibling){
i++;
}
return i;
}

后记:在非IE下,有 compareDocumentPosition 方法用于比较节点的位置关系,但经过测试该方法的性能非常差,其内部的实现机制肯定不是像IE那样缓存了资源索引号的,如果这个方法极高效,那就可采用二分法进行计算,从而提高效率,但目前还不可能。

最后的总结:

对于表格TD和TR元素优先使用cellIndex和rowIndex属性。

对于IE优先使用sourceIndex属性。

其它情形使用previousElementSibling 或 previousSibling 进行遍历。

compareDocumentPosition 方法的性能非常差。
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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 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)

Wie entferne ich das letzte untergeordnete Element in jQuery? Wie entferne ich das letzte untergeordnete Element in jQuery? Feb 19, 2024 pm 09:40 PM

jQuery ist eine beliebte JavaScript-Bibliothek, die zur Vereinfachung vieler Aufgaben in der Webentwicklung, einschließlich der DOM-Manipulation, verwendet wird. In der Webentwicklung ist es häufig erforderlich, DOM-Elemente hinzuzufügen, zu löschen, zu ändern und zu überprüfen, und auch das Löschen des letzten Unterelements ist eine häufige Anforderung. In diesem Artikel werden verschiedene Methoden zum Löschen des letzten untergeordneten Elements mithilfe von jQuery vorgestellt. Methode 1: Verwenden Sie die last()-Methode. jQuery stellt die last()-Methode bereit, mit der das letzte Element des aktuellen Abfrageergebnisses ausgewählt werden kann. Indem man dies kombiniert

Verstehen Sie den Event-Bubbling-Mechanismus: Warum wirkt sich ein Klick auf ein untergeordnetes Element auf das Ereignis des übergeordneten Elements aus? Verstehen Sie den Event-Bubbling-Mechanismus: Warum wirkt sich ein Klick auf ein untergeordnetes Element auf das Ereignis des übergeordneten Elements aus? Jan 13, 2024 pm 02:55 PM

Ereignis-Bubbling verstehen: Warum löst ein Klick auf ein untergeordnetes Element ein Ereignis auf dem übergeordneten Element aus? Ereignis-Bubbling bedeutet, dass in einer verschachtelten Elementstruktur, wenn ein untergeordnetes Element ein Ereignis auslöst, das Ereignis wie beim Bubbling Schicht für Schicht an das übergeordnete Element weitergegeben wird, bis zum äußersten übergeordneten Element. Mit diesem Mechanismus können Ereignisse an untergeordneten Elementen im gesamten Elementbaum verbreitet werden und nacheinander alle zugehörigen Elemente auslösen. Um das Bubbling von Ereignissen besser zu verstehen, schauen wir uns einen bestimmten Beispielcode an. HTML-Code: <divid="parent&q

Verwenden Sie den Pseudoklassenselektor :nth-child(n+3), um den Stil untergeordneter Elemente auszuwählen, deren Position größer oder gleich 3 ist Verwenden Sie den Pseudoklassenselektor :nth-child(n+3), um den Stil untergeordneter Elemente auszuwählen, deren Position größer oder gleich 3 ist Nov 20, 2023 am 11:20 AM

Verwenden Sie den Pseudoklassenselektor :nth-child(n+3), um den Stil untergeordneter Elemente auszuwählen, deren Position größer oder gleich 3 ist. Das spezifische Codebeispiel lautet wie folgt: HTML-Code: &lt;divid="container" &gt;&lt;divclass="item"&gt ;Erstes untergeordnetes Element&lt;/div&gt;&lt;divclass="item"&

Entfernen Sie das letzte untergeordnete Element des Elements mit jQuery Entfernen Sie das letzte untergeordnete Element des Elements mit jQuery Feb 26, 2024 pm 12:39 PM

Wie entferne ich das letzte untergeordnete Element mit jQuery? Bei der Frontend-Entwicklung stoßen wir häufig auf Vorgänge, bei denen Seitenelemente hinzugefügt, gelöscht, geändert und überprüft werden müssen. Unter diesen ist das Löschen des letzten untergeordneten Elements eine häufige Anforderung. In diesem Artikel wird anhand konkreter Codebeispiele erläutert, wie Sie mit jQuery das letzte untergeordnete Element löschen. Zuerst müssen wir die jQuery-Bibliothek in die Seite einführen, um sicherzustellen, dass ihre Funktionen genutzt werden können. Fügen Sie Ihrer HTML-Datei den folgenden Code hinzu: &lt

CSS-Stile zum Auswählen untergeordneter Elemente an bestimmten Positionen mithilfe des Pseudoklassenselektors :nth-child CSS-Stile zum Auswählen untergeordneter Elemente an bestimmten Positionen mithilfe des Pseudoklassenselektors :nth-child Nov 20, 2023 pm 04:43 PM

CSS-Stile, die den :nth-child-Pseudoklassenselektor verwenden, um untergeordnete Elemente an bestimmten Positionen auszuwählen. In CSS werden Pseudoklassenselektoren verwendet, um Elemente in einem bestimmten Zustand in einem HTML-Dokument auszuwählen. Zusätzlich zu gängigen Pseudoklassenselektoren wie :hover und :active gibt es auch einen sehr nützlichen Pseudoklassenselektor namens :nth-child, der es uns ermöglicht, untergeordnete Elemente an bestimmten Positionen auszuwählen. Die Syntax des :nth-child-Pseudoklassenselektors lautet wie folgt: parent element:nth-child(n) wobei das übergeordnete Element das übergeordnete Element darstellt

So ermitteln Sie mit jQuery, ob ein Element untergeordnete Elemente enthält So ermitteln Sie mit jQuery, ob ein Element untergeordnete Elemente enthält Feb 28, 2024 am 11:03 AM

So ermitteln Sie mit jQuery, ob ein Element untergeordnete Elemente enthält. Bei der Webentwicklung kommt es häufig vor, dass wir feststellen müssen, ob ein Element untergeordnete Elemente enthält. Diese Funktion kann sehr einfach mit jQuery erreicht werden. In diesem Artikel stellen wir vor, wie Sie mit jQuery ermitteln, ob ein Element untergeordnete Elemente enthält, und geben spezifische Codebeispiele. In jQuery können Sie die Methode children() verwenden, um alle direkten untergeordneten Elemente eines angegebenen Elements auszuwählen. Wenn ein Element untergeordnete Elemente enthält, verwenden Sie childr

jQuery implementiert die Funktion, zu bestimmen, ob ein Element untergeordnete Elemente hat jQuery implementiert die Funktion, zu bestimmen, ob ein Element untergeordnete Elemente hat Feb 28, 2024 pm 12:54 PM

jQuery ist eine in der Frontend-Entwicklung weit verbreitete JavaScript-Bibliothek. Sie bietet eine einfache und leistungsstarke API, mit der DOM-Elemente einfach bearbeitet werden können. In der tatsächlichen Entwicklung müssen wir manchmal feststellen, ob ein Element untergeordnete Elemente enthält. In diesem Fall müssen wir jQuery verwenden, um dies zu erreichen. Um festzustellen, ob ein Element untergeordnete Elemente hat, können wir die von jQuery bereitgestellte Methode verwenden. Hier ist ein Beispielcode, der zeigt, wie Sie mit jQuery ermitteln, ob ein Element untergeordnete Elemente enthält: &lt

jQuery-Beispiel: Wie lösche ich das letzte untergeordnete Element mit jQuery? jQuery-Beispiel: Wie lösche ich das letzte untergeordnete Element mit jQuery? Feb 20, 2024 pm 07:45 PM

Titel: jQuery-Beispiel: Wie lösche ich das letzte untergeordnete Element mit jQuery? Bei der Webentwicklung stoßen wir häufig auf Situationen, in denen wir DOM-Elemente über JavaScript manipulieren müssen. Als weit verbreitete JavaScript-Bibliothek bietet jQuery viele praktische Methoden zum Bearbeiten von DOM-Elementen. In diesem Artikel wird anhand eines Beispiels erläutert, wie mit jQuery das letzte untergeordnete Element gelöscht wird, und es werden detaillierte Codebeispiele bereitgestellt. Zuerst müssen wir es in die HTML-Datei einfügen

See all articles