42

私はjqueryでイベントを学んでいます。それらを実装している間、私は疑問に出くわしました。mousedown() と click() イベントの違いは何ですか。そして、どのイベントをどの条件で使用すればよいですか?

例: 以下のコードでは、両方のイベントが同じタスクを実行します。

$("#p1").mousedown(function(){
  alert("Mouse down over p1!");
});


$("#p1").click(function(){
  alert("Mouse down over p1!");
});

どちらも同じように機能します。誰かが違いを明確にできますか。同じ場合、どちらを優先する必要がありますか?.

4

7 に答える 7

58

onMouseDown左または右(または中央)が押されたときにトリガーされます。同様に、onMouseUpいずれかのボタンが離されたときにトリガーされます。onMouseDownマウスがオブジェクト上でクリックされてから離れたonMouseUp場合でもトリガーされますが、他の場所でボタンをクリックして押したままにし、オブジェクトの上で離すとトリガーされます。

onClick同じオブジェクト上でマウスの左ボタンを押して離したときにのみトリガーされます。順序を気にする場合、同じオブジェクトに 3 つのイベントがすべて設定されている場合、それonMouseDownは , onMouseUp, thenonClickです。ただし、各イベントは一度だけトリガーする必要があります。

詳細:

http://api.jquery.com/click/
http://api.jquery.com/mouseup/
http://api.jquery.com/mousedown/

Anton Baksheievによって書かれたソース

于 2013-10-01T06:55:55.567 に答える
1

$(element).click()マウスボタンを押して離す発生します。

$(element).mousedown()が起動したら、マウス ボタンを押します。

クリックしたボタンをそのボタンの上に置いたままにしてから、ここで離してみてください: http://jsfiddle.net/n9rJ9/

于 2013-10-01T06:55:59.713 に答える
1

彼らはしない。両方のイベント ハンドラーを同じ要素にバインドしたので、クリック イベントが発生する前に mousedown が常に発生するので、そう思うかもしれません。

それらを異なる要素にバインドすると、マウスダウンはリリースなしでボタン (任意のマウス ボタン) を押すと常に起動し、左 (プライマリ) 側のマウス ボタンを離した後にクリックが起動することがわかります。

この小さな jsfiddle を参照してください: http://jsfiddle.net/wBfbm/

$("#p1").mousedown(function(){
  alert("Mouse down over p1!");
});


$("#p2").click(function(){
  alert("Mouse down over p1!");
});
于 2013-10-01T06:56:17.087 に答える
1

onMouseDown左または右(または中央)が押されたときにトリガーされます。

onClick同じオブジェクト上でマウスの左ボタンを押して離したときにのみトリガーされます。

于 2013-10-01T06:56:52.393 に答える
0

この方法を試してください。event.stopPropagation は、マウス ダウンからのクリック イベント イベントを停止しないためです。マウス ダウン イベントとクリック イベントは相互に関連していません。

 var mousedDownFired = false;

  $("#id").mousedown(function(event){
      mousedDownFired =true;
      //code
  });

  $("#id").click(function(event){
     if(mousedDownFired)
      {
         mousedDownFired = false;
         return;
      }
      //code
 });

更新しました:

番号 。マウスイベントはこのようにトリガーされます

1) マウスダウン

2) クリック

3) マウスアップ

マウス ダウンがトリガーされると、マウス ダウン イベント クリックがトリガーされた後にフラグが有効になります。このクリック イベントでは、フラグ変数が無効になります。これは循環的な方法として機能します。2回のマウスダウンまたは2回のクリックは考慮しません

于 2013-10-01T07:01:00.103 に答える