1

为什么 .hide() 不适用于 jquery ui 手风琴中的元素?它在调用 之前确实有效$("#accordion").accordion(),但之后无效。.show() 方法在前后都可以正常工作。.toggle() 方法工作一半(仅显示部分)。

<html>
    <head>
        <link href="jquery-ui-1.9.1.custom/css/ui-lightness/jquery-ui-1.9.1.custom.css" rel="stylesheet">
        <script src="jquery-ui-1.9.1.custom/js/jquery-1.8.2.js"></script>
        <script src="jquery-ui-1.9.1.custom/js/jquery-ui-1.9.1.custom.js"></script>
        <script>
            $(function()
            {
                //$("#inside").hide("fade"); /* <-- this does work */
                $("#accordion").accordion();
                $("#inside").hide("fade"); /* <-- but this doesn't */
            });
        </script>
    </head>
    <body>
        <div id="accordion">
            <h3>Page 1</h3>
            <div id="page1">Blah</div>
            <h3>Page 2</h3>
            <div id="page2">
                <div id="inside">Blah too</div>
            </div>
        </div>
    </body>
</html>

请不仅解释如何以另一种方式解决它,更重要的是为什么它不能以这种方式工作。

4

2 回答 2

2

基于hide()没有"fade"参数的调用实际上可以工作(见这里),我会说它与淡入淡出的实现方式有关。淡入淡出效果可能取决于元素可见的事实,因为当您使用hide("fade")div 显示它时它会起作用(请参阅此处)。

于 2012-11-10T00:15:45.280 回答
0

发生这种情况是因为accordion' 使用hide. 第一次显示面板时,也会显示内容,即使它们以前是隐藏的,所以如果在隐藏内容时面板没有打开,它们会在您第一次选择该面板时出现。请参阅 juan.facorro 的解释,因为它提供了关于什么不起作用的正确解释。

这是一种可能的解决方法,方法是显示#inside最初包含的面板,隐藏它,然后显示第一个面板:http: //jsfiddle.net/cjc343/KuJJm/2/

于 2012-11-10T00:14:32.770 回答