(請不要JQUERY) 假設我有以下樹。我想迭代從div.foo
開始匹配querySelectorAll('div.bar')
的元素,但不會覆蓋與相同選擇器匹配的子元素。我怎麼做?DOM:遍歷元素,排除與匹配相同的選擇器的嵌套元素
div.foo
div.bar -- select
div.bar -- select
div.bar -- skip
div.bar -- skip
div.damnSon
div.bar -- select
div.bar -- select
div.bar --skip
div.bar -- select
div.bar -- skip
TreeWalker
是,一個沒有去,因爲
- 它完全拒絕該元素,而我仍然要處理它,只是沒有它的孩子
- 它只能在可見的元素,而我可能正在迭代隱藏的項目
NodeIterator
由於相同的問題而無法工作,並且即使在拒絕父項時也會對子項進行迭代。
最理想的情況是以某種方式得到querySelector
的結果不平坦。然後我只需循環它們而不必關心自己的嵌套屬性。
遍歷並檢查類是在父鏈元素... –
@Jonasw這是行不通的。首先,您要求在每個單個匹配元素上對樹進行子迭代,以查看它是否可能包含父級,然後在調用parent.containsNode時進行另一次迭代。其次,如果我從具有相同選擇器的根元素中調用此元素,除非我明確地停止根元素上的循環,否則所有元素都不會通過檢查,這會使其效率更低。 – Megakoresh
由於不存在「父選擇器」,並且因爲':not()'僅使用簡單的選擇器,並且不適合表示「if(not)」,所以我看不到純CSS選擇器在「更復雜樹木中的星座。 //你能詳細談談你最終想要對這些元素做什麼?在我看來,你自我回答現在指出的三個問題中的兩個本應該已經被制定爲對問題本身的限制。那麼「還有什麼」......? – CBroe