滑动&在jQuery中隐藏多个面板

时间:2009-10-30 02:58:06

标签: jquery select drop-down-menu html-select

我有一个表,每行中有多行是一个选择列表,并根据选择(当触发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有效?

劳埃德

1 个答案:

答案 0 :(得分:1)

您可以通过在选择器中添加:visible来关闭可见或打开的面板,如下所示:

var allPnls = '.inv-dtl-comnts-add:visible,.inv-dtl-comnts-update:visible';

我不确定这是否能解决您的问题。也许如果您提供代表此问题的示例页面,我可以提供帮助。