我有一个表,每行中有多行是一个选择列表,并根据选择(当触发onchange事件时)面板显示包含行下面的其他数据。我目前有这样的代码:
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有效?
劳埃德
答案 0 :(得分:1)
您可以通过在选择器中添加:visible来关闭可见或打开的面板,如下所示:
var allPnls = '.inv-dtl-comnts-add:visible,.inv-dtl-comnts-update:visible';
我不确定这是否能解决您的问题。也许如果您提供代表此问题的示例页面,我可以提供帮助。