鉴于以下HTML,jQuery选择器会选择最后一个'blah blah'span
而不是第一个?
<div class='d1'>
<span>
<a>blee
<span> <!-- don't select this span -->
<span>blah</span> blah
</span>
</a>
</span>
</div>
<br/>
<div class='d1'>
<span>
<a>blee
<span> <!-- select this span -->
blah blah
</span>
</a>
</span>
</div>
我尝试过使用not()的变体,但无法弄明白。看起来我需要的是一个找到第一个跨度的选择器,但如果它包含另一个跨度则排除它。类似的东西:
$('.d1 span a span').not(':has("span")')
但是没有这样做。我错过了什么?
答案 0 :(得分:6)
如果我理解你的问题,那么你所缺少的只是一个儿童组合者:
$('.d1 span a > span').not(':has("span")')
您需要这样做的原因是.d1 span a span
将匹配第一个span
元素中a
元素的 {/ em> .d1
个后代。 .not()
调用将排除外部调用,但内部调用仍将是匹配集的一部分。通过添加子组合子,仅选择外部span
,然后通过调用.not()
删除。
答案 1 :(得分:2)
答案 2 :(得分:1)
答案 3 :(得分:1)
试试这个:
$('.dl:last span:not(:has(*))')
答案 4 :(得分:0)
<强> demo jsbin 强>
$('a>span:not(:first)')