2015-11-03 82 views
1

Element.select()返回可能包含此元素或其任何子元素的匹配元素。有什麼方法可以查詢這個元素,但不包括它的孩子?如何查詢(選擇)不包括它的孩子的元素?

例如,我想知道元素是否與查詢條件相匹配,例如, 「P,李」。我知道我可以使用Element.getElementsByxxx()方法,但由於查詢可以是標籤,屬性或其他條件,Element.getElementsByxxx()將不起作用。這將是很好的Element.select()可以限制對給定元素的查詢只。可能嗎?謝謝。

回答

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 

所以,如果你需要一次匹配多個選擇器,我想你需要一些邏輯。

我希望這是你所要求的。

相關問題