2013-10-01 8 views
27

jqueryでイベントを学習しています。それらを実装している間、私は間違いなく遭遇しました。 mousedown()とclick()イベントの違いは何ですか?どのイベントでどのイベントを使用すべきですか?jqueryのマウスクリックとクリックの違い

例えば: イベントの両方が、次のコードで同様の作業を行い:

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


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

両方がsame.Can誰かが差を明確に行います。同じ場合、私はどちらを好むべきですか?

+2

「ドラッグ」の場合を考えてみてください。 –

+0

Guptaと同意します。例:場所2のボタン1はクリックでアラートを持ち、2はマウスでアラートを出しています。マウスをそれぞれ下に動かし、カーソルをドラッグして離します。マウスがダウンします - クリックしても起動しません – Cheese

答えて

34

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

onClickは、同じオブジェクト上でマウスの左ボタンを押して放すとトリガーされます。あなたが注文を気にする場合、同じオブジェクトに3つのイベントがすべて設定されている場合は、onMouseDownonMouseUp、次にonClickです。それぞれはたとえ一度だけトリガーすべきです。

詳細は:あなたがプレスマウスボタンし、その後、それを離すと

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

SourceAnton Baksheiev

+3

これらのURLはjQueryを参照していますが、onClick、onMouseUp、OnMouseDownは実際にjQueryイベントではなくJavaScriptイベントです。私は、[ここではw3c仕様にリンクする方が良いと思う](http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-mouseevents)(スクロールダウンリンクされたページのビット) –

+0

しかし、同じ要素にclickイベントとmousedownイベントの両方をバインドするとします。 mousedownイベントは常にクリックではなく発砲します。それはなぜそれほど起こっているのですか?マウスダウンとクリックの両方が必要な場合はどうすればよいですか? これを見てくださいjsfiddle http://jsfiddle.net/a74k92dd/ – Arvin

+0

http://jsfiddle.net/wBfbm/37/ tests – hlcs

11

mousedownイベントは、マウスボタンが押されたときに解放される前に発生します。

イベントは、mousedownイベントとmouseupイベントの後に発生します。

+0

mousedownとmouseupイベントが同じelemtnで発生すると、 'クリック'イベントがトリガされることにも言及してください。 –

1

$(element).click()火災、によって書かれました。

$(element).mousedown()が発生した場合は、マウスボタンを押します。

は、そのボタン上でクリックボタンを押したままにしてください、そして、ここでそれを解放:http://jsfiddle.net/n9rJ9/

0

マウスの数がありますmouseDownイベント、のmouseUpおよびマウスクリックで関連イベント、プラスいくつかの他をクリックします。

mouseClickイベントの前には、mouseDownとmouseUpの後に、マウスがプロセス内で移動していない限り、通常マウスイベントが続きます。

1

これらはありません。両方のイベントハンドラを同じ要素にバインドしているので、クリックイベントが発生する前に必ずマウスが起動します。

これらを異なる要素にバインドすると、マウスのボタンを離さずにマウスのボタン(mousdown)が常に発射され、クリック(左) 。

は、この小さなjsfiddleを参照してください:左または右(または中央)のいずれかが押されたときにhttp://jsfiddle.net/wBfbm/

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


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

onMouseDownがトリガされます。

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

1

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

var mousedDownFired = false; 

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

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

更新:

NO。マウスイベントが)このよう

1のようにトリガーされるのMouseDown

2)

3をクリック)のMouseUp

マウスダウンがトリガされたならば、フラグは、マウスダウンイベントをクリックした後に有効になります.INがトリガされますこのクリックイベントはフラグ変数を無効にします。これは循環的な方法として機能します。 2つのマウスを2回クリックしたり、2回クリックしたりしないでください。

+2

これは単なる間違っています。あなたは正しい情報を持っているようにこの投稿を更新する必要があります。このコードから、マウスがクリックされたことを明示的に確認できます。https://codepen.io/mudassir0909/pen/eIHqB – kamelkev

+0

ご注文は使用しているブラウザによって異なる場合があります。私はブラウザ間でテストしていません。しかし、Chromeで処理されたイベントの観測では、イベントはマウス操作、マウスアップの順にトリガーされ、クリックされます。 – BrightIntelDusk

+0

すべてのブラウザが順番に起動します:この回答に記載されている順番ではなくマウスをクリックしてください。 – JonBrave

関連する問題