0

次のスクリプトがあります。

$('#target').bind('click', 
                        function () {
                            $('#target').css({ 'display': 'none' });
                            $('#targetFake').css({ 'display': 'inline-block' });
                        },
                        function () {
                            alert('bind callback'); 
                        });

「バインド コールバック」アラートは、要素がバインドされているときに 1 回だけではなく、「#target」要素がクリックされるたびにトリガーされているようです。バインディングが 1 回行われていることを確認するためにコールバックを作成できますか?

4

1 に答える 1

2

クリック イベントごとに 1 つのトリガーです。バインドはbind呼び出しごとに 1 回発生します。同じハンドラで誤ってbind複数回呼び出すと、ハンドラが 1 回だけで複数回トリガーされることがわかりますclick

bindしかし、あなたの呼び出しで 2 つの関数は何をしているでしょうか? 2 つの関数を受け入れるオーバーロードはありません。

あなたが探しているかもしれない他の選択肢は次のとおりです。

  • その場で一度だけ関数を呼び出す - 直接呼び出すだけで、そのために jQuery は必要ありません。
  • イベントが最初に発生したときにのみトリガーされるハンドラーをバインドする--oneこの目的で使用します。
  • ハンドラーを通常どおりバインド、その場で 1 回呼び出します。でこれを行うことができます$(...).bind('click', ...).trigger('click')
于 2012-05-23T09:22:01.027 に答える