如何在jQuery中选择链接而不是子链接?

时间:2009-01-13 11:20:38

标签: jquery css-selectors

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

5 个答案:

答案 0 :(得分:11)

使用直接子选择器&gt;

e.g

$('div>a')

<强>更新  安抚RoBorg先生

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

Demo

  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')

我测试了这个并且它有效! : - )