2013-10-26 3 views

ответ

2

Closest('#target') не будет работать здесь, так как тег a является родным братом до span#target не является родителем. Используйте Closest, чтобы найти родительский элемент для обоих из них, а затем выполните поиск, чтобы получить пробел target, или просто используйте .prev, чтобы получить рассвет target.

$(this).closest("div").find("#target"); 

или

$(this).prev("#target"); 
+0

Какова цель этого, так как у вас есть «id», почему нельзя использовать селектор «id» –

1

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

var target = $('#target') 

Если у вас есть образец, как выше, где anchor элемент следует span элемент затем использовать атрибут класса вместо id. В таком случае span является предыдущим родственным элементом anchor, поэтому вам необходимо использовать .prev().

<span class='target'></span> 
<a></a> 

var target = $(this).prev('.target');// $(this).prev() is sufficient 

.closest() будет искать элемент предка, а не для брата.

0

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

Для каждого элемента в наборе, получить первый элемент, соответствующий селектор по тестирование самого элемента и пересечение его предков в дереве DOM.

В вашем случае <a> и <span> являются братьями и сестрами, а не родитель/ребенок - поэтому использование closest не найти span начиная с a.

Смежные вопросы