#jquery #selector
#jquery #селектор
Вопрос:
HTML:
<div class="article">
<div class="article-content">
<p><a href="javascript:;">Flygor</a> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam et est sit amet eros inter dum auctor vel semper quam. Vivamus non purus amet.</p>
<div class="wrap btn-actions">
<div class="col"><a href="#" class="bt bt-medium" title="Retweet this" target="_blank">REPLY</a>
<a href="javascript:;" class="bt bt-large retweet">RETWEET</a><a href="javascript:;" class="bt bt-icon">
</div>
</div>
</div>
У меня есть этот Javascript:
$('.retweet').click(function() {
var retweetText = $(this).('.article-content p').text();
});
Итак, я хочу, чтобы тег p был в DIV.article-content, но только в этом. У меня на странице около 10 статей, и когда пользователь нажимает DIV.retweet, я хочу использовать только тег p только в этом одном DIV.
Ответ №1:
Ваш Javascript действительно близок, на самом деле. Вам нужно использовать, .parents()
потому что .article-content
выше есть несколько родительских элементов .retweet
, затем перейдите к дочернему элементу, p
.
Редактировать:
Как указывает @ShaneBlake, .closest()
лучше подходит для этой ситуации. .closest()
захватывает только первое, что .article-content
пройдено, в то время как .parents()
захватило бы их все. Следовательно, код теперь.
$('.retweet').click(function() {
$(this).closest('.article-content').children('p').text();
});
Комментарии:
1. 1 для единственного рабочего примера. (Также, рабочий пример )
2. .closest() следует использовать вместо .parents() . Причину можно найти в API ( api.jquery.com/closest )
3. Вы правы. Отредактировано для использования .closest(). Не знал, следует ли заменять весь ответ, поэтому я оставил оригинальный ответ, но не исходный код.
4. вау, супер помощь. Спасибо. Быстрый дополнительный вопрос, хочу ли я настроить привязку сейчас? Как мне это получить? Я пробовал .children(‘p a’), но это не сработало??
5.
.children('p').children('a')
Ответ №2:
попробуйте это :
var retweetText = $(this).closest('.article-content').children('p').text();
Комментарии:
1. Однако
<p>
не является родительским элементом.retweet
— это родной брат родительского элемента. Я могу ошибаться, но я считаю, что вам нужно подняться, чтобы сделать down.