Sqo*_*qoo 7 jquery jquery-selectors
我需要能够在不知道节点类型,类,id或层次结构的情况下从片段中选择根元素.
<div id="0">
<div id="0a">
<div id="a01"></div>
</div>
<div id="0b">
</div>
<div id="0c">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我希望能够执行类似$(':root')的操作,并在上面的示例中选择0.
更好的是我更喜欢$(':level(0)')哪个意思与上面相同,$(':level(1)')选择0a,0b和0c并$(':level(1)>div')选择a01.
关于如何巧妙地做到这一点的任何想法?
虽然这个问题不久前得到了完全正确的回答 - 我只是想自己尝试一下,并不太热衷于使用像这样的选择器*:not(* *)- 主要是因为可能的开销。我不知道这是否是 jQuery 最近添加的功能(我使用的是 1.8),但你可以使用:
$(':eq(0)');
Run Code Online (Sandbox Code Playgroud)
这将选择第一个找到的非文本节点元素,因此除非您正在遍历的 dom 在其形成中是非法的,否则您应该始终获取根元素。它也是高度优化的,因为 jQuery 应该知道在找到第一个元素后停止。
所以这里有一些东西适合所有 WSOD 粉丝:
$(':eq(0)').remove();
Run Code Online (Sandbox Code Playgroud)
哦,以防万一,上面的代码片段只是说明选择器并不明显,并且您发现自己正在使用部分片段(而不是完整文档),那么您应该将此选择器与 jQuery 的过滤方法一起使用:
$(fragment).filter(':eq(0)');
Run Code Online (Sandbox Code Playgroud)
但是,在使用片段时,您可以执行以下操作:
$(fragment).get(0);
Run Code Online (Sandbox Code Playgroud)
尽管请记住,.get(0)如果文本/注释节点是文档中的第一项,则可以选择它们,而过滤器方法将始终找到第一个实际元素。
| 归档时间: |
|
| 查看次数: |
20982 次 |
| 最近记录: |