Javascript 使用jquery逐个遍历DOM节点
我想通过维护序列来遍历网页上的节点 e、 g.以下是基本DOM:Javascript 使用jquery逐个遍历DOM节点,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我想通过维护序列来遍历网页上的节点 e、 g.以下是基本DOM: <BODY> <DIV id ='1'> Test 1 </DIV> <DIV id='2'> Details about <SPAN id='3'> Execution </SPAN> </DIV> </BODY> 是否有人知道这一点,如何使用jquery(最好)或javascript实现这一点, 请分享他
<BODY>
<DIV id ='1'> Test 1 </DIV>
<DIV id='2'> Details about <SPAN id='3'> Execution </SPAN> </DIV>
</BODY>
是否有人知道这一点,如何使用jquery(最好)或javascript实现这一点,
请分享他们的参考资料
谢谢
-普拉文你可以用一个身体循环,就像这样:
$("body").find("*").andSelf().each(function() {
alert(this.nodeName); //alerts body, div, div, span
});
注意:和self
已被弃用,现在是addBack()
的别名,应与jQuery 1.8及更高版本一起使用
,则
正文部分是这样,您就不会得到
及其内容等。dom方法中总是有标准的Crockford walk
示例:
特定的walk\u DOM
代码示例复制自此处:
EDIT:文本节点具有nodeType=3
,因此如果需要,也可以将其添加到if()
语句中
walk_the_DOM(document.body, function(node) {
if(node.nodeType == 1 || node.nodeType == 3)
alert(node.id); // ID will be undefined if it is a text node
});
简单
function walk(node, fn) {
if (node) do {
fn(node);
if (node.nodeType === 1) walk(node.firstChild, fn);
} while (node = node.nextSibling);
}
用法:
walk(document.body, function(){
// do something with `this`
// e.g.
alert(this.id);
});
为了避免非元素节点,这将起作用:
function walk(node, fn) {
if (node) do {
if (node.nodeType === 1) {
fn(node);
walk(node.firstChild, fn);
}
} while (node = node.nextSibling);
}
@pravin你在找$('*')
?@Avinash:对不起,你能探索一下这一点吗……你的意思是说页面上的所有节点……在$('*')
中,“*”
选择器用于选择页面上的每个节点。我想它不会选择文本节点……就像上面的例子,即测试1的innerHTML。在这里,它将跳转每个节点,如、、,,,。如果我想,我该如何实现:,测试1,关于执行的详细信息,这可能吗?@pravin-您可以在迭代这些节点时获取这些节点的内容,但您的示例没有文本节点,您应该更新问题,以了解您的目标。这有两个反对票。我也很好奇,因为答案是正确的。落选的选民应该表现得体,并解释原因。确切地说……这个答案似乎很好……请加上对落选者的评论,所以我也知道还有其他理由这样做……这不包括
@Roatin-你为什么不这么说?更新了。好吧,+1如果不是因为你几乎总是给出建设性的评论来代替否决票这一事实。在DOM树中遍历父到子的伟大递归代码
function walk(node, fn) {
if (node) do {
fn(node);
if (node.nodeType === 1) walk(node.firstChild, fn);
} while (node = node.nextSibling);
}
walk(document.body, function(){
// do something with `this`
// e.g.
alert(this.id);
});
function walk(node, fn) {
if (node) do {
if (node.nodeType === 1) {
fn(node);
walk(node.firstChild, fn);
}
} while (node = node.nextSibling);
}