Очень простой вопрос о parent () и prev() в jQuery
Я обрабатываю событие click гиперссылки с помощью функции JavaScript. Я хочу получить данные из гиперссылки.
Страница выглядит так:
<div class="div1">
<div title="Title 1" class="div2">
<p class="p1"><a class="linkJs">The link in question</a></p>
</div>
</div>
<div class="div1">
<div title="Title 2" class="div2">
<p class="p1"><a class="linkJs">The link in question</a></p>
</div>
</div>
И JavaScript что-то вроде этого:
$(function() {
$('a.linkJs').click(function(){
value=$(this).parent().prev().text();
alert(value);
});
});
Что я хочу иметь, так это значение названия в div2. Перейдя по первой ссылке, я получаю: название 1. И, нажав на 2-й: название 2.
Это должно быть очень, очень просто, но я просто не могу найти свой ответ нигде.
Спасибо.
5 ответов:
Вы можете найти его с помощью ближайшего метода:
$('a.linkJs').click(function(){ value=$(this).closest('div').attr('title'); alert(value); });
Вы хотите использовать
closest
var value = $(this).closest('div').attr('title');
Ваша проблема заключается в том, что тег
<p>
не является родственным для<div>
, но дочерним, поэтому вам придется сделатьparent()
дважды - хотя в этом нет необходимости, поскольку функцияclosest
является удобным ярлыком. Кроме того, функцияtext()
возвращает чистое текстовое содержимое внутри тега, Если вам нужен атрибут заголовка тега, вам нужно использовать функциюattr
.
Попробуйте использовать метод
closest()
: http://api.jquery.com/closest/Получаем первый элемент-предок, который соответствует селектору, начиная с текущий элемент и продвижение вверх через дерево дом.
$(function() { $('a.linkJs').click(function(){ value=$(this).closest(".div2").attr("title"); alert(value); }); });