Jquery выбирает только то, что находится в этом DIV?

#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.