-1

ユーザーが上下にクリックすると「ハハ」を返す次のコードがあります。ただし、これが返される回数に問題があります。初めて上/下をクリックすると、「はは」が1回しか返されません。2回目にこれを行うと、2回印刷されます。3 回目は 'haha' が 3 回出力されます。なぜこれが起こっているのかについて何かアドバイスはありますか?アップ/ダウンごとに「ハハ」を1回だけ印刷したい。

                $(".test").mousedown(function(){
                 $(".test").mouseup(function(){
                  console.log('haha');

                  });
                });
4

4 に答える 4

2

mouseup の後にイベント処理がアンバインドされるように、oneを使用できます。

            $(".test").mousedown(function(){
             $(".test").one('mouseup', function(){
              console.log('haha');

              });
            });

しかし、単純に click を使用する方が簡単に思えます:

$(".test").click(function(){ console.log('haha') });
于 2013-05-15T14:42:14.057 に答える
0

問題は、ユーザーがクリックするたびに「mouseup」ハンドラーをコードに追加していることです。このハンドラを追加するために mousedown イベントを待つ必要はありません。最初から追加できるはずです。マウスダウンが最初にトリガーされたことを本当に確認したい場合は、次のようにブール値を使用します。

var mouseClicked = false;

$(".test").mousedown(function(){
    mouseClicked = truel
}).mouseup(function(){
    if (mouseClicked ==true){
        console.log('haha');
    }
});
于 2013-05-15T14:46:46.373 に答える