0

以下に、要素がクリックされたときに DIV を非表示または表示する簡単な関数を示します。ただし、1回のマウスクリックで2回実行されています。いくつかのブレークポイントでコードを停止するために firebug を使用しました。最後の関数 (slideToggle) が終了すると、クリック関数の先頭に戻り、もう一度繰り返します。これは、表示されるはずだった要素が、slideToggle で再び非表示になるため、まだ非表示になっていることを意味します。

$('#showEmailHistory').click(function() {
    $('#emailHistory').siblings().slideUp();
    $('#emailHistory').slideToggle();
    event.stopPropagation();
});

event.stopPropagation(); を配置しました。これを修正するための一時的な手段として。しかし、私が本当に知りたいのは、再実行の原因は何ですか? 要素 #showEmailHistory にリンクされた他のイベントはありません。

クリックにリンクされた要素は単純な div です。

<div id="showEmailHistory" class="button">Show Email History</div>

表示したい要素は単純な div です。

<div id="emailHistory">
    Content
</div>
4

3 に答える 3

0

おそらく、「イベント」変数を param 関数として参照するようにしてください。このようなもの:

$('#showEmailHistory').click(function(event) {
    $('#emailHistory').siblings().slideUp();
    $('#emailHistory').slideToggle();
    event.stopPropagation();
});
于 2012-11-30T15:19:18.223 に答える
0

私はちょうど答えを見つけました。このページには、スクリプトが 2 回実行されたことを意味する重複したスクリプト タグを持つ重複があります。それを実現させてくれた同僚に感謝します。

于 2012-11-30T15:45:50.687 に答える
-1

これは二重呼び出しなしで機能します。http://jsfiddle.net/jazaret/C6JsH/

$('#showEmailHistory').click(function() {
    $('#emailHistory').siblings().slideUp();
    $('#emailHistory').slideToggle();
});​

ダブル ファイアの問題は通常、トリガーされた DOM 要素の上で一致するクラスにクリック イベントが関連付けられている場合に発生します。特定の DOM 要素または jsfiddle のサブセットを提供できれば、問題をより適切に特定できるでしょうか?

于 2012-11-30T15:23:50.087 に答える