У меня есть таблица с несколькими строками в каждой строке - это список выбора и на основе выбора (когда происходит событие onchange) отображаются панели с дополнительными данными ниже строки. В настоящее время у меня есть код как это:Скольжение и скрытие нескольких панелей в jQuery
var allPnls = '.inv-dtl-comnts-add,.inv-dtl-comnts-update';
$(document).ready(function(){
hideAll();
//select action change
$(".inv-dtl-ddlaction").change(onSelectChange);
$(".btn-cancel").click(function(event){
slideAll();
$(".inv-dtl-ddlaction").val('[Select an Action]');
return false;
});
});
function onSelectChange(event){
//find out which select item was clicked
switch($(this).val())
{
case 'View/Add Comment':
$(this).closest(".row").children(allPnls).slideUp("fast",
function(){
$(this).closest(".row").children(".inv-dtl-comnts-add").slideToggle("fast");
});
break;
case 'Change Status':
$(this).closest(".row").children(allPnls).slideUp("fast",
function(){
$(this).closest(".row").children(".inv-dtl-comnts-update").slideToggle("fast");
});
break;
default:
//code to be executed if n is different from case 1 and 2
}
}
function hideAll(){
$(allPnls).hide();
}
function slideAll(){
$(allPnls).slideUp("fast");
}
Так что я прячусь все панели при загрузке страницы, а если панель уже открыта, я хочу, чтобы скользить его закрыть, прежде чем открывать заново новую панель. Это работает с обратной передачей. Только с одной панелью в отборе она отлично работала, но с двумя панелями раздвигание происходит дважды (кажется, что они скользят вниз по закрытым панелям, прежде чем снова сдвинуть их назад). Как я могу настроить это так, чтобы все панели, перечисленные в переменной allPnls, были закрыты ТОЛЬКО, если они уже открыты? Есть ли лучший способ скользящих панелей закрыть, а затем иметь обратный вызов, чтобы работать с slideToggle?
Lloyd