如何在 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>
如何在 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>
使用直接子选择器 >
例如
$('div>a')
更新: 安抚RoBorg先生
如果您在第一个 div 内的嵌套元素中确实有锚点,那么以下内容将起作用。这使用过滤器来确保父 div 确实是您的目标 div,而不是嵌套 div。
var firstDivAnchors = $('div a').filter( function(){
return $(this).closest('div').is('#yourDiv');
});
如果您要定位特定的 div,您可以尝试:
$("div#mydiv a :not(div a)");
编辑:如果您发布更多上下文(HTML)会很棒:)
我记不太清楚了,但是 children() 不可以吗?
$(thisDiv).children('a')
在 docs.jquery.com 中它显示: children() 获取一组元素,其中包含每个匹配的元素集的所有唯一直接子元素。
我认为 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 中的标签,也不会忽略嵌套在 spans 中的 a 标签。
我也有同样的需要,环顾四周。受这里的一些答案的启发,我写了这个
$('div a').not('div div a')
我已经对此进行了测试,并且可以正常工作!:-)