Как выбрать ссылки, но не дочерние ссылки в jQuery? - PullRequest
2 голосов
/ 13 января 2009

Как в 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 ]

11 голосов
/ 13 января 2009

используйте прямой дочерний селектор>

* 1003 например *

$('div>a')

UPDATE: чтобы успокоить мистера Роборга

Если у вас есть якоря внутри вложенных элементов внутри первого div, то будет работать следующее При этом используется фильтр, чтобы убедиться, что родительский div действительно является целевым, а не вложенным div.

Демо

  var firstDivAnchors = $('div a').filter( function(){
        return $(this).closest('div').is('#yourDiv');
  });
6 голосов
/ 13 января 2009

Если есть определенный div, на который вы хотите нацелиться, вы можете попробовать:

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

РЕДАКТИРОВАТЬ: Было бы здорово, если вы разместите еще немного контекста (HTML):)

1 голос
/ 27 мая 2012

Я думаю, что Данита была на правильном пути, но ее образец также не работал для меня. Однако использование .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.

1 голос
/ 13 января 2009

Я не очень хорошо помню, но разве у детей () это не работает?

$ (thisDiv) .children ( 'а')

В docs.jquery.com это гласит: дети() Получите набор элементов, содержащий все уникальные непосредственные дочерние элементы каждого соответствующего набора элементов.

0 голосов
/ 28 сентября 2012

У меня была такая же потребность и я огляделся. Вдохновленный несколькими ответами здесь, я написал это

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

Я проверил это, и оно работает! : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...