0

http://jsfiddle.net/nicktheandroid/ZSvHK/

我需要帮助弄清楚如何解决这个问题,下面列出了问题。如果您能提出任何改进建议,那就太好了。

我有多个 div,每个 div 都有自己的触发器(按钮)。一次只能打开一个菜单,所以如果我已经DIV1显示,然后单击触发器DIV2:然后DIV1应该关闭,并且DIV2应该打开。

如果当我单击触发器(按钮)时 DIV 正在动画,那么不要做任何事情,以免排队和出现其他问题。

如果 DIV 打开并且我单击 DIV 之外的任何内容,则 DIV 将关闭,这是正确的行为。查看示例。

我的问题:

  1. 是如果我DIV2打开了,并且我单击了触发器(按钮)DIV1DIV2则不会像应有的那样关闭。

  2. 当双击按钮时(当 DIV 被隐藏时,单击,然后在它仍然动画时再次单击)DIV SlidesDown 就像它应该的那样,但随后它会向上滑动。当 DIV 动画时,按钮不应该接受任何东西,AKA 我不希望它像那样排队。将来我不会使用触发器按钮,因此禁用将不起作用。

4

3 回答 3

4

在我看来像手风琴:http: //jqueryui.com/demos/accordion/

于 2011-04-06T07:53:29.047 回答
1

我的解决方案是为每个按钮添加一个正确的 id:

<button rel="search" id="searchButtonId">click</button>

然后,您可以为按钮绑定单击事件并检查单击了哪个按钮:

$("button").click(
    function() {
        if ( $(this).is("#searchButtonId") ) {
            $("#search").slideDown(800);
            $("#bottom").slideUp(800);
        } else if( $(this).is("#bottomButtonId") ) {
            $("#search").slideUp(800);
            $("#bottom").slideDown(800);
        }
    }
);

但是,使用此解决方案,如果您单击其他位置,则不会关闭 div。

于 2011-04-06T09:10:50.920 回答
0

您可以在打开一个之前关闭所有 div。像这样的东西(有变化) $('.mydivs').hide(); $('.mydivs.div1').show();

于 2011-04-06T07:50:45.440 回答