我需要能够从 a 中选择根元素fragment不知道节点类型、类、id 或层次结构。
<div id="0">
<div id="0a">
<div id="a01"></div>
</div>
<div id="0b">
</div>
<div id="0c">
</div>
</div>
我希望能够执行类似 $(':root') 的操作,并在上面的示例中选择 0 。
更好的是我更喜欢$(':level(0)')
这意味着与上面相同,$(':level(1)')
将选择 0a、0b 和 0c 并且$(':level(1)>div')
会选择a01。
关于如何巧妙地做到这一点有什么想法吗?
好的,那么您需要执行以下操作(假设您正在使用已有的示例),如果您想使用 jquery 查找顶级节点,则如下所示:
$('*:not(* *)');
您在这里实际上要求的是不是其他节点的子节点的所有节点。问题是,对于 html 文档,这将始终只提供 html 元素,这并不是特别有用。因此,如果您想在 html 文档正文中查找顶级元素,您可以使用更简单的方法:
$('body > *');
如果你想要第二级,你就去
$('body > * > *');
但是,假设您有某种任意文档结构(例如您提到的 foo ),您可以做的是使用第一个示例来查找第一级:
$('*:not(* *)');
然后是第二级
$('*:not(* *)').find('> *');
对于第三级
$('*:not(* *)').find('> * > *');
等等等等。如果您正在寻找根 div 元素(假设您的示例与问题类似),您可以这样做:
$('div:not(div div)');
依此类推,将 * 替换为 div。不太确定你为什么要这样做,但它会起作用。问题是这个问题并没有真正为我们提供足够的背景信息来为您提供更好的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)