javascript - Loop through all descendants of a div - JS only -
i've been using jquery this:
$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"); }; }); but i've been reading jquery's .each() method quite slow when compared simple loop (jsperf). question how can mimic pure js? find elements within div, loop through nodes.
i've tried search can seem find jquery answers - everywhere.
i've tried other things close got selecting descendants:
var children = document.getelementbyid('id').getelementsbytagname('*'); for( var = 0; i<children.lengtth; i++){ children[i].removeattribute("style"); console.log(children[i]); }
you're doing right
var ancestor = document.getelementbyid('id'), descendents = ancestor.getelementsbytagname('*'); // gets descendent of ancestor now need loop on children
var i, e, d; (i = 0; < descendents.length; ++i) { e = descendents[i]; e.removeattribute('style'); e.removeattribute('width'); e.removeattribute('align'); if (e.tagname === 'embed') { d = document.createelement('div'); d.setattribute('class', 'video'); ancestor.appendchild(d); } } depending on you're doing, because you're using getelementsbytagname descendents, descendents live nodelist, it's length change add more nodes ancestor. if need avoid this, convert array before loop
decendents = array.prototype.slice.call(decendents); see this gist reusable function.
Comments
Post a Comment