我想選擇一個或多個不是另一個特定元素的後代的元素。在另一個特定元素之外選擇元素
<html>
<body>
<div>
<p>
<b>
<i> don't select me </i>
</b>
</p>
</div>
<div>
<i>don't select me either </i>
</div>
<i> select me </i>
<b>
<i> select me too </i>
</b>
</body>
</html>
在上面的例子我想選擇所有的「i」的元素,是div元素內不。 其他方法很容易,('div i'),但是在not()中使用它是不可能的。
如何選擇div元素之外的所有i元素? 往往是建議使用jQuery的,這將是這樣的:
nondiv_i = all_i.not(all_div.find("i"))
我不能使用jQuery,但可以使用jqLite - jqLite沒有一個不是() - 功能。 jqLite解決方案也是受歡迎的! 有沒有可能做到這一點沒有重複的迭代和比較?
編輯:爲了澄清,我不想爲我的i元素有任何div-ancestors,不僅沒有直接的div父母。
一個可比的XPath應該是這樣的:
//i[not(ancestor::div)]
'document.querySelectorAll(的身體:不(DIV)I')
然後,您可以索引讓他們' – putvande
@ putvande請添加您的評論作爲答案,以便OP有望接受它。 – JeffC
此答案無效。它返回不要選擇我和也請選我。它在思考時看起來很好(選擇body,選擇所有不是div的元素,然後抓取i-elements),但它不起作用(這是我的問題首先出現的地方)。雖然我把這部分項目放在一邊,但我還沒有放棄這個問題。 :)仍在尋找答案。 – Peter1807