請建議更好的標題以使其他用戶更容易找到此問題。在不知道匹配元素的嵌套位置的情況下選擇匹配的元素,但不匹配那些匹配元素的子元素
我試圖選擇一個父元素的孩子,但孩子可能是一個孩子的孩子,沒有限制多少嵌套的孩子。我想選擇那個孩子,但是如果在許多嵌套的孩子中有一個孩子的孩子,我不希望這個孩子被選中。例如:
<div class="section">
<div> <!--First nested child (Take this and repeat as many times as you want within the parent 'section' class, structure of nested children changing each time.)-->
<div> <!--Second nested child (Can have potentially infinite sub-nests like first, second, etc.)-->
<div class="block"> <!--Select this -->
Select
<div>
<div class="block"> <!--DONT select this -->
Don't select
<div class="section">
<div> <!--More unknown nestings to an assumed infinite degree-->
<div class="block"> <!--Select this-->
Select
<div>
<div class="block">Don't select</div> <!--DONT select this -->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div>
<div>
<div class="block"> <!--Select this -->
Select
<div>
<div class="block"> <!--DONT select this -->
Don't select
<div class="section">
<div> <!--More unknown nestings to an assumed infinite degree-->
<div class="block"> <!--Select this-->
Select
<div>
<div class="block">Don't select</div> <!--DONT select this -->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
這看起來非常可怕,但這個想法是,我們只希望在任何孩子選擇第一次出現,並在那之後沒了。
我明顯喜歡CSS來做這個選擇,但是如果需要我們可以使用jQuery選擇器。我不確定在CSS中是否可行。
小提琴你一起玩:https://jsfiddle.net/78b3c6xh/1/
有三種解決這個問題。我選擇了來自Arman P.的純粹的CSS作爲答案,因爲這是問題偏好的問題,也是最快和最簡單的解決方案。
第二好的來自Susanne Peng,由於jQuery的簡單性和最少的使用。不確定效率,但它工作。
第三個是ibrahim mahrir誰是第一個解決,並利用自定義JavaScript函數依賴於jQuery。
如果可能的話,在這種情況下推薦使用CSS解決方案。工作小提琴解決方案是在該答案的評論。
試着用更好的例子更清楚你想要什麼。我無法得到你想要的東西。 –
我已經回答了你的問題。但後來我回過頭來閱讀你提供的HTML代碼的評論,我開始懷疑這不是正確的答案。所以你只需要'.section'子樹的第一個'.block'元素。對? –
@ibrahimmahrir這是正確的。看到我評論你的答案的小提琴。 – forrestmid