2013-04-25 4 views
1

У меня проблемы с toggle() в jquery. См. http://jsfiddle.net/rch7L/. При нажатии на заголовок уровня 1 он делает именно то, что должен, но при нажатии на заголовок уровня 2 он открывает все строки уровня 3, а не только строки уровня 3 под заголовком уровня 2.Toggle siblings with jquery

$('tr.level-2, tr.level-3').css("display", "none"); 

$("tr.level-1").click(function(){ 
    $(this).siblings('tr.level-2').toggle(); 
}); 

$("tr.level-2").click(function(){ 
    $(this).siblings('tr.level-3').toggle(); 
}); 

Я попытался с помощью братьев и сестер(), но это не то, что я хочу, щелкая заголовки уровня 2.

ответ

2

Просто используйте .nextUntil() методу

LIVE DEMO

$("tr.level-2").click(function(){ 
    $(this).nextUntil('tr.level-2').toggle(); 
}); 
+1

Любовь эти маленькие JQuery необычайно известно о функциях. –

+0

@ChrisDixon yeh, хороший маленький метод :) –

+0

Lovely. Если я открою строки уровня 3, и я нажму уровень 1, только заголовки уровня 2 рухнут, а уровень 3 все равно будет виден. Я думаю, 'siblings(). Toggle()' также является неправильным способом сделать это в другой функции? – user2232982