jQuery获取所有后代节点,包括文本节点

jQuery get all descendant nodes including text nodes

本文关键字:节点 文本 包括 后代 获取 jQuery      更新时间:2023-09-26

是否有一种方法在jQuery中获得父节点的所有后代节点,包括文本节点,递归?我知道$.contents()方法,但正如jQuery文档所述:

.contents()方法允许我们在DOM树

中搜索这些元素的直接子元素

我的问题是,我有一个包含更多(非文本)节点的子节点,而我需要的不仅仅是父节点。我正在尝试一些解决方法:

var contents = container.contents();
var foo = $('.foo');
var index = contents.index(foo);
contents.splice(index,1,$('.foo').contents());

…但是这里插入的是数组,而不是单个元素。我的最后一步是将元素逐骨推到contents数组,但我想知道是否有更好的方法来做到这一点。

我真的不明白你在做什么,但是为了获得某个元素的所有后代节点,你可以使用以下命令:

var nodes = $('*', container).addBack().contents();
演示:

http://jsfiddle.net/5vfBg/