выбор родительских блоков с помощью jquery - PullRequest
0 голосов
/ 13 марта 2012

У меня есть следующая разметка:

<tr>
<td class="message">
    <p>This is a test post</p>
</td>
<td class="metadata">
    <div class="top">
        <a href="">#1</a><br/>
        <span>12.03.2012</span><br/>
    </div>
    <div class="bottom">
         <a href="" class="light-button quote">Quote</a>
    </div>
</td>
</tr>

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

$('a.quote').on('click', function(e){
    e.preventDefault();

    $(this).closest('.message > p').text();      
});`

, но это не работает. Возвращает пустую строку.

edit: Iсделал это работает $(this).closest('td').prev().children('p.thread-message').html();

Ответы [ 4 ]

0 голосов
/ 13 марта 2012

Это будет работать;

var quote = $(this).parents('tr').first().find('.message p').text();

См. демо .

0 голосов
/ 13 марта 2012

Это работает для меня.

$('a.quote').on('click', function(e){
    e.preventDefault();
     alert($(this).closest('td').prev('td').find('p').html());      
});

Вот пример jsfiddle: http://jsfiddle.net/7tfMK/9/

0 голосов
/ 13 марта 2012

$(this).parents('td').siblings('.message').children('p').text()

Вам нужно либо пройти весь путь до родительского ТР, как в сообщении @ Shyju, либо перейти к родительскому ТД и взять его родного брата.

0 голосов
/ 13 марта 2012

Я бы сделал это так

$('.message > p', $(this)).text();      

Это не проверено, и в this добавление объекта jQuery может не потребоваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...