如何在jQuery中只选择div元素中的链接而不是该div中包含的子div元素?
<div>
<a>Link 1</a>
<a>Link 2</a>
<div>
<a>Not these 1</a>
<a>Not these 2</a>
</div>
</div>
答案 0 :(得分:11)
使用直接子选择器&gt;
e.g
$('div>a')
<强>更新强> 安抚RoBorg先生
如果你在第一个div中的嵌套元素中有锚点,则以下内容将起作用。 这使用过滤器来确保父div确实是您要定位的div而不是嵌套div。
var firstDivAnchors = $('div a').filter( function(){
return $(this).closest('div').is('#yourDiv');
});
答案 1 :(得分:6)
如果您要定位特定div,可以尝试:
$("div#mydiv a :not(div a)");
编辑:如果你发布一些更多的上下文(HTML)会很棒:)
答案 2 :(得分:1)
我记得不太清楚,但是孩子们()不会这么做吗?
$(thisDiv)。儿童( 'a')的
在docs.jquery.com中,它显示: 儿童() 获取一组元素,其中包含每个匹配元素集的所有唯一直接子元素。
答案 3 :(得分:1)
我认为Danita走在正确的轨道上,但她的样本也不适合我。然而,使用.not()确实有效:
假设:
<div id="testdiv">
<span><a>span a</a></span> <a>a</a>
<div>
<a>div a</a><span><a>div span a</a></span>
</div>
</div>
仅查找未嵌套在嵌套div中的标记。
var test = $('#testdiv').find('a').not('#testdiv div a');
$(test).each(function(){
trace( $(this).html());
});
它不仅会忽略嵌套div中的标记,而且不会忽略嵌套在span中的标记。
答案 4 :(得分:0)
我有同样的需要,环顾四周。受到一些答案的启发,我写了这个
$('div a').not('div div a')
我测试了这个并且它有效! : - )