[英]Javascript querySelectorAll, how to match with only top elements?
我正在使用聚合物。
假设我在模板中有一些内容如下
<ul>
<li>
Home
</li>
<li>
About
</li>
<li>
Actions
<ul>
<li>
Logout
</li>
</ul>
</li>
</ul>
在Ready功能中
var listNodes = this.querySelectorAll('ul > li');
我需要这个javascript查询选择器的帮助。 我应用的当前查询给出了该模板中所有ul的 li 。 但我只想要顶级ul的 李 。 我不希望模板的所有孩子里 。 我认为将其更改为正确的查询,我可能会得到正确的结果。 请指导。 谢谢。
使用Mohit的评论。 能够找到答案。
var listNodes = this.querySelectorAll('ul:scope > li');
将id或某个唯一选择器应用于top元素,如下所示:
<ul id="top">
<li>
Home
</li>
<li>
About
</li>
<li>
Actions
<ul>
<li>
Logout
</li>
</ul>
</li>
</ul>
允许你获得这样的顶级元素:
var topElems = document.querySelectorAll("#top > li");
你可以做其他独特的选择器,比如body > ul > li
但你的想法是你必须唯一地识别要搜索的顶级ul
元素。
编辑
如果它在聚合物模板中,您可以执行类似template > ul > li
。
你必须了解一些关于李的事情。 如果它位于文档的顶层,请使用body > ul > li
console.log(document.querySelectorAll('body > ul > li'))
<ul> <li> Home </li> <li> About </li> <li> Actions <ul> <li> Logout </li> </ul> </li> </ul>
否则,您必须有办法唯一地标识ul的父级
console.log(document.querySelectorAll('#user-content > ul > li'))
<div id="user-content"> <ul> <li> Home </li> <li> About </li> <li> Actions <ul> <li> Logout </li> </ul> </li> </ul> </div>
ul > li
检查所有具有li
作为直接子项的ul
元素。 这就是为什么你得到所有的ul
和li
。
如果你想限制到顶级ul
, li
元素。 然后使用ul标签的直接parent
。
document.querySelectorAll('body > ul > li')
假设body
是ul
的直接父母。 如果你有一个包装div /任何其他具有类或ID的元素,也可以使用它来代替body。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.