2010-01-22 8 views
0

Привет У меня есть HTML код, как этотЗакройте ребенка родителя родителя

<div id="top"> 
    <div class="panel"> 
    <h1>toppanel</h1> 
    <p>Content from toppanel</p> 
    </div> 
    <div class="panelholder" id="ptop"> 
    <a class="open" href="#">open</a> 
    <a class="close" href="#">close</a> 
    </div> 
</div> 

более чем на время. Единственный differnce это идентификатор из первого DIV Мой JQuery код выглядит следующим образом

// Expand Panel 
$(".open").click(function(){ 
    $(#######).slideDown("slow"); 
}); 

и мой вопрос, что я должен написать для $ (#######), если я хочу slideDown DIV с классом панелью

ответ

3
// Expand Panel 
$(".open").click(function(){ 
    $(this).parent().siblings('.panel').slideDown("slow"); 
}); 

Вы должны ознакомиться с документацией API по адресу traversal.

+0

. Ближайшие чеки? Однако .panel 'не является родителем' .open ' –

+0

.panel * является * sibling родителя .open. Это то, что делает мой код. – jonwd7

+0

Когда я это увидел, вы использовали '.closest ('div.panel') ' –

0
$(".open").click(function(){ 
    $(this).parent('div.panel').slideDown("slow"); 
}); 

найдет родитель открытой кнопки с классом панели и сдвиньте ее вниз, таким образом, вы не должны беспокоиться об идентификаторах или что-нибудь, просто открыть ссылку бытия внутри панели.

+0

Я не думаю, что «div.panel» на самом деле является родителем «.open» ... –

3
$(this).closest('top').find('.panel').slideDown("slow"); 

или

$(this).parent().prev().slideDown("slow"); 
0

Отредактированный к более простому решению!

$(this).parent().siblings(".panel") 

Посмотрите в документации по traversing.

+0

Я думаю, что там слишком много вызовов «.parent()». –

+0

Изменен, этот лучше! –

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