2015-07-01 3 views
1

В настоящее время я работаю над тем, что можно назвать ответом на сообщение какого-то сотрудника.Захват содержимого ближайшего предыдущего div

В принципе, я хочу достичь, когда вы нажимаете «отвечать на сообщение» (класс .comment-reply), который находится под сообщением - вы захватываете его имя автора из .comment-username div, и вы помещаете его в текстовое поле. Проблема состоит в том, чтобы нацелить этот div и захватить его содержимое, которое я хочу поместить в переменную, и поместить позже в текстовое поле. Невозможно определить этот таргетинг и захват. Основная структура записи, как это:

<div class="comment-block comment-child"> 
    <div class="comment-info title-small text-bold"> 
     <div class="push-left"> 
      <span class="comment-username sm-fc">AUTHOR NAME is here</span> 
      <span class="comment-time">some date</span> 
     </div> 
     <div class="push-right"> 
      <span class="comment-rating">some int value</span> 
     </div> 
     <div class="clear"></div> 

    </div> 
    <div class="comment-text"> 
     Sample text => Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
    </div> 
    <div class="comment-functions"> 
     <span class="comment-reply title-small text-bold">reply to post</span> 
     <span class="comment-rate comment-plus"> + </span> 
     <span class="comment-rate comment-minus"> - </span> 
    </div> 
</div> 

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

Я пытался с $.prev(), $.closest(), но результатов не найдено.

Любые предложения?

+0

Вы попробовали prevAll()? – gopalraju

+0

да, старался следовать этому: http://stackoverflow.com/questions/2310270/jquery-find-closest-previous-sibling-with-class но нет результатов – Marcin

+0

Вы нацеливаетесь на div, чтобы получить идентификатор , или span? –

ответ

4

Вы можете использовать closest(), чтобы получить общий .comment-block контейнера и оттуда find().comment-username и получить text(). Попробуйте это:

$('.comment-reply').click(function() { 
    var username = $(this).closest('.comment-block').find('.comment-username').text(); 
    // do something with the username here... 
}); 

Example fiddle

+0

работает отлично, не могу поверить, что все было так просто. Большое спасибо. – Marcin

+0

Без проблем, рад помочь. –

1

С родителями (селектором) вы можете:

var name = $(this).parents('.comment-username').text(); 

удачи.

+0

Обратите внимание, что '.comment-username' не является родителем' .comment-reply' - так что это не будет определять значение имени пользователя. –

+0

Это правда, извините за неправильное чтение. В другом случае это работает отлично. –

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