2013-03-05 4 views
0
$(".exercise-name").click (e) -> 
    e.preventDefault() 
    $(this).parent().siblings(".exercise-details").slideToggle('fast') 

В основном в следующей структуреЕсть ли лучший способ сделать это в jQuery?

.exercise 
    .exercise-header 
    .exercise-name 
    .exercise-details 

Есть в любом случае, чтобы добраться до упражнения- деталей без необходимости проходить через одного из родителей, а затем его братья и сестры. Яркая комбинация?

+0

Это кажется достаточно хорошим. Если вы знаете, что это ближайший следующий брат, вы можете использовать 'next' =>' $ (this) .parent(). Next(). SlideToggle ('fast') ' – elclanrs

ответ

1

Может быть что-то вроде этого:

$(".exercise-header, .exercise-name").click(function(e){ 
    e.preventDefault() 
    $(this).siblings(".exercise-details").slideToggle('fast'); 
}); 

или это:

$(".exercise-name").click(function(e){ 
    e.preventDefault() 
    $('.exercise').find(".exercise-details").slideToggle('fast'); 
}); 
+0

В первом примере, как это будет работать .exercise -name, не будет ли это справедливо только для .exercise-header? –

1

вы можете использовать next() ..

$(this).parent().next().slideToggle('fast'); 

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

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