2

如何在 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>
4

5 回答 5

11

使用直接子选择器 >

例如

$('div>a')

更新: 安抚RoBorg先生

如果您在第一个 div 内的嵌套元素中确实有锚点,那么以下内容将起作用。这使用过滤器来确保父 div 确实是您的目标 div,而不是嵌套 div。

演示

  var firstDivAnchors = $('div a').filter( function(){
        return $(this).closest('div').is('#yourDiv');
  });
于 2009-01-13T11:24:19.893 回答
6

如果您要定位特定的 div,您可以尝试:

$("div#mydiv a :not(div a)");

编辑:如果您发布更多上下文(HTML)会很棒:)

于 2009-01-13T11:52:13.173 回答
1

我记不太清楚了,但是 children() 不可以吗?

$(thisDiv).children('a')

在 docs.jquery.com 中它显示: children() 获取一组元素,其中包含每个匹配的元素集的所有唯一直接子元素。

于 2009-01-13T12:11:50.437 回答
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 中的标签,也不会忽略嵌套在 spans 中的 a 标签。

于 2012-05-27T17:08:14.983 回答
0

我也有同样的需要,环顾四周。受这里的一些答案的启发,我写了这个

$('div a').not('div div a')

我已经对此进行了测试,并且可以正常工作!:-)

于 2012-09-28T16:58:45.137 回答