Jaka byłaby najskuteczniejsza metoda znalezienia elementu potomnego (z klasą lub identyfikatorem) określonego elementu nadrzędnego przy użyciu wyłącznie czystego javascript. Brak jQuery ani innych frameworków.
W takim przypadku musiałbym znaleźć child1 lub child2 of parent , zakładając, że drzewo DOM może mieć wiele elementów klasy child1 lub child2 w drzewie. Chcę tylko elementów rodzica
<div class="parent">
<div class="child1">
<div class="child2">
</div>
</div>
</div>
javascript
dom
Blyde
źródło
źródło
document.getElementById('element-id')
.Odpowiedzi:
children
Właściwość zwraca szereg elementów, takich jak sposób:Istnieją alternatywy
querySelector
, na przykład,document.getElementsByClassName('parent')[0]
jeśli chcesz.Edycja: Teraz, kiedy o tym myślę, możesz po prostu użyć
querySelectorAll
do uzyskania przyzwoitościparent
posiadania nazwy klasychild1
:Różnica między qS i qSA polega na tym, że ta ostatnia zwraca wszystkie elementy pasujące do selektora, podczas gdy ta pierwsza zwraca tylko pierwszy taki element.
źródło
Jeśli już masz,
var parent = document.querySelector('.parent');
możesz to zrobić, aby zawęzić wyszukiwanie doparent
dzieci:źródło
parent.querySelectorAll('.child')
zwrócić NodeListPo prostu dodając kolejny pomysł, możesz użyć selektora podrzędnego, aby uzyskać bezpośrednie dzieci
powinien zwrócić wszystkie bezpośrednie dzieci z klasą .child1
źródło
Masz element nadrzędny, chcesz pobrać całe dziecko określonego atrybutu 1. pobierz rodzica 2. uzyskaj nazwę węzła nadrzędnego, używając
parent.nodeName.toLowerCase()
konwersji nazwy węzła na małe litery np. DIV będzie div 3. w innym celu uzyskaj atrybut rodzic npparent.getAttribute("id")
. to ci daid
rodzica 4. Następnie użyj,document.QuerySelectorAll(paret.nodeName.toLowerCase()+"#"_parent.getAttribute("id")+" input " );
jeśli chcesz wprowadzić dzieci węzła nadrzędnegoźródło