Używam jQuery to zrobić:pętli wszystkich potomków div - JS tylko
$element.find("*").each(function() {
var $this = $(this);
$this.removeAttr("style width align");
if ($this.is("embed")) {
$element.append("<div class='video'></div>");
$this.attr("width", 640).attr("height", 360).parent().appendTo("#" + element + " .video");
};
});
Ale czytałem, że .each()
metoda jQuery jest dość powolny w porównaniu do zwykłej pętli for (jsPerf). Moje pytanie brzmi: jak mogę to naśladować za pomocą czystego JS? Znajdź wszystkie elementy w obrębie div
, a następnie przeprowadź pętlę przez węzły.
Próbowałem tego szukać, ale wszystko, co mogę znaleźć, to odpowiedzi na jQuery - wszędzie.
Próbowałem innych rzeczy, ale to było tak blisko, jak mam do wyboru wszystkich potomków:
var children = document.getElementById('id').getElementsByTagName('*');
for(var i = 0; i<children.lengtth; i++){
children[i].removeAttribute("style");
console.log(children[i]);
}
powodem istnienia jQuery jest dokładnie to ... może być wolniejsze (jak to obchodzi ...), ale to będzie działać na wszystkich przeglądarkach ... czy naprawdę chcesz iteracyjne DOM drzewo i sprawiają, że działa we wszystkich przeglądarkach? – Rufinus
[] .slice.call (elm.children) daje tablicę elementów potomnych, podczas gdy [] .slice.call (elm.childNodes) zawiera węzły tekstowe.getElementsByTagName() będzie głębsze niż bezpośrednie dzieci, jeśli tego chcesz. – dandavis
Co jest nie tak z rozwiązaniem waniliowym JS? –