Ich habe jQuery benutze dies zu tun:Schleife durch alle Nachkommen eines div - JS nur
$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");
};
});
Aber ich habe gelesen, dass .each()
Methode jQuery ist ziemlich langsam, wenn für Schleife auf einen einfachen Vergleich (jsPerf). Meine Frage ist, wie kann ich das mit reinem JS nachahmen? Finden Sie alle Elemente innerhalb einer div
, dann durchlaufen Sie die Knoten.
Ich habe versucht, dies zu suchen, aber alles, was ich finden kann, sind jQuery Antworten - überall.
Ich habe andere Dinge ausprobiert, aber das war so nah, wie ich auf die Auswahl alle Nachkommen bekam:
var children = document.getElementById('id').getElementsByTagName('*');
for(var i = 0; i<children.lengtth; i++){
children[i].removeAttribute("style");
console.log(children[i]);
}
der Grund für die Existenz von jquery ist genau dies ... es langsamer sein kann (wie cares ...), aber es wird auf allen Browsern ... wollen Sie wirklich den dom iterieren Baum und machen es in allen Browsern funktionieren? – Rufinus
[] .slice.call (elm.children) gibt Ihnen ein Array von untergeordneten Elementen, während [] .slice.call (elm.childNodes) Textknoten enthält.getElementsByTagName() wird tiefer gehen als direkte Kinder, wenn Sie das möchten. – dandavis
Was ist los mit Ihrer Vanilla JS-Lösung? –