Element.select()返回可能包含此元素或其任何子元素的匹配元素。有什么方法可以查询这个元素但不包括它的孩子吗?
例如,我想知道元素是否与查询条件匹配,例如“P,李”。我知道我可以使用Element.getElementsByxxx()方法,但由于查询可以是标记或属性或其他一些条件,因此Element.getElementsByxxx()将不起作用。这将是很好的Element.select()可以限制对给定元素的查询。可能吗?感谢。
答案 0 :(得分:1)
您可以添加否定仅匹配根元素::not(*>*)
这意味着相关元素不得包含任何直接父元素。例如,考虑这个HTML内容:
<div class="test"><p class="test2">xxx</p><p>yyy</p></div>
如果e
是外div
元素:
!e.select("div:not(*>*)").isEmpty() -> true
!e.select(".test:not(*>*)").isEmpty() -> true
!e.select(".test2:not(*>*)").isEmpty() -> false
!e.select("li:not(*>*)").isEmpty() -> false
!e.select("p:not(*>*)").isEmpty() -> false
但不幸的是,伪选择器:not
只修改了最后一个选择器:
!e.select("p,li:not(*>*)").isEmpty() -> true
所以,如果你需要同时匹配多个选择器,我猜你需要一些逻辑。
我希望这就是你要求的。