JQuery выберите родительские элементы родного брата - PullRequest
0 голосов
/ 28 января 2012

Хорошо, давайте посмотрим, смогу ли я объяснить это достаточно ясно здесь. Мой HTML выглядит как

<li>
    <div class="info_left" rel="snack">Fries</div>
    <div class="info_right">
        <span class="info_remove">[Remove]</span>
        <span class="info_favorite">[Favorite]</span>
    </div>
</li>
<li>
    <div class="info_left" rel="lunch">Burger</div>
    <div class="info_right">
        <span class="info_remove">[Remove]</span>
        <span class="info_favorite">[Favorite]</span>
    </div>
</li>
<li>
    <div class="info_left" rel="4thmeal">Taco</div>
    <div class="info_right">
        <span class="info_remove">[Remove]</span>
        <span class="info_favorite">[Favorite]</span>
    </div>
</li>

Если вы заметите, вы увидите «Удалить» и «Избранное» внутри div «info_right». Что мне нужно сделать, когда щелкнет любой из этих двух вариантов, так это получить rel и текстовые значения одного и того же li в "info_left" div. Я пробовал несколько способов, но не думаю, что я прибиваю комбо между родителями, братьями и сестрами, или я не знаю. В любом случае, надеясь, что кто-то может бросить мне кость.

Ответы [ 3 ]

1 голос
/ 28 января 2012

Это должно быть просто:

$('.info_remove,.info_favorite').on('click', function() {
   var $left = $(this).parent().siblings('.info_left');
   var rel = $left.attr('rel');
   var txt = $left.text();
   ...
});
0 голосов
/ 28 января 2012

попробуйте

$('.info_remove,.info_favorite').click(function() {
   var target_elem = $(this).parent().prev();
   alert(target_elem.attr('rel'));
   alert(target_elem.text());
});

скрипка: http://jsfiddle.net/ss37P/1/

0 голосов
/ 28 января 2012

Пример jsFiddle

$(document).ready(function(){
    $(".info_right span").click(function(){
        $("#msg").html($(this).attr("class")+": "+$(this).parent().prev().attr("rel"));
    })
})
...