0

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

私はこれを正しくする方法を理解するのに助けが必要です、以下にリストされた問題。改善を提案できれば、それは素晴らしいことです。

複数のdivがあり、各divには独自のトリガー(ボタン)があります。一度に開くことができるメニューは1つだけなので、DIV1表示した場合は、トリガーをクリックしてDIV2DIV1を閉じ、DIV2開く必要があります。

トリガー(ボタン)をクリックしたときにDIVがアニメーション化されている場合は、何もしないでください。キューに入れられたり、他の問題が発生したりするのを防ぎます。

DIVが開いていて、DIVの外側をクリックすると、DIVが閉じます。これは正しい動作です。例を確認してください。

私の問題:

  1. 開いていDIV2て、のトリガー(ボタン)をクリックすると、本来のDIV1ようDIV2に閉じないということです。

  2. ボタンをダブルクリックすると(DIVが非表示の場合はクリックし、アニメーションを続けている間にもう一度クリックします)、DIVは想定どおりにスライドダウンしますが、スライドアップします。DIVがアニメーションしている間、ボタンは何も受け入れないはずです。別名、そのようにキューに入れたくありません。また、将来的にはトリガーにボタンを使用しないため、無効にしても機能しません。

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

1つを開く前にすべてのdivを閉じることができます。このようなもの(バリエーションあり)$('。mydivs')。hide(); $('。mydivs.div1')。show();

于 2011-04-06T07:50:45.440 に答える