2009-11-09 2 views
3

У меня есть некоторые HTML, который выглядит следующим образом:

<div> 
    <div class="value"> 
    <a href="#" class="clicker">Some Value</a> 
    </div> 
    <div class="heading"> 
    Some Name<img src="loading.gif" style="visibility:hidden"> 
    </div> 
</div> 

Это может повторяться несколько раз, в зависимости от того, сколько значений и заголовков должны быть перечислены. Используя jQuery, я подключил функцию, которая будет выполняться при щелчке по клику a.clicker. Как часть того, что происходит, я хотел бы вызвать show() на .heading img ниже. Тем не менее, я просто не могу понять, как это должно быть выбрано.

$('a.clicker').live("click", function() { 

    // This next line, in my brain, works, but in reality it doesn't! 
    $('.heading img', $(this).parent().parent()).show(); 

    // do some other AJAXy things 
}); 

Я отметил линию, которая, как я думаю, должна это делать, но она не показывает img. Я безуспешно просматривал документацию и поток на пару часов.

Спасибо за любую помощь!

+0

: @ Тим какой из @ cballou-х примеров работал? 1-й или 2-й? –

ответ

12

У вас есть только несколько вещей в неправильных местах. Очень близко.

$('a.clicker').live("click", function() { 
    $(this).parent().parent().find('.heading img').show(); 
}); 

Это также может быть решена второй путь:

$('a.clicker').live("click", function() { 
    $(this).parent().next('.heading img').show(); 
}); 
+1

Не сбивать этот ответ или что-то еще, но я считаю, что использование parent() очень хаки. Если dom изменяет каким-либо образом, он может легко просто сломаться. При этом использование атрибутов данных и полей идентификаторов, вероятно, является более верным способом. – relipse

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