41

jQueryを使用して、プッシュ可能なボタンのイベントを組み合わせて使用​​することがよくmousedownあります。mouseup

ただし、私がイベントを使用したすべての場合で、代わりにmouseupイベントをバインドclickすると同じ結果が得られるように見えました。

以下の2つの方法に実質的な違いはありますか?

// Method 1
$('.myButton').bind('click', callback);

// Method 2
$('.myButton').bind('mouseup', callback);

両方の方法を使用する場合の違いについて、技術的な説明を求めていることに注意してください。これは、重複としてフラグが立てられた質問とは関係ありません。クリックとマウスダウン/マウスアップを区別する

4

5 に答える 5

81

mouseupイベントを使用すると、画面上の別の場所をクリックし、クリックボタンを押したまま、ポインターをmouseup要素に移動してから、マウスポインターを離すことができます。

クリックイベントでは、その要素でmousedownイベントとmouseupイベントが発生する必要があります。

通常の予想では、クリックにはmousedownイベントとmouseupイベントの両方が必要なので、クリックイベントをお勧めします。

重複の可能性から、mouseupおよびmousedownイベントは、左クリックボタン以外のマウスボタンによっても発生する可能性があるようです。これは、一般的なユーザーが期待するものとは大きく異なります。

于 2013-02-11T02:52:46.690 に答える
1

私の理解では、「クリック」は多くの複雑さを隠します(たとえば、同じ要素でマウスダウン/アップが発生することを確認する、ESC /右クリックでキャンセルするなど)。「mousedown/up」ではなく「click」を使用することをお勧めします。

基になるDOM要素が置き換えられるような方法でアプリがコンテンツを頻繁に更新するときに、「クリック」が機能しないように見える1つのシナリオ。この場合、「クリック」はトリガーされず、カスタマーエクスペリエンスが低下する可能性があります。

于 2016-12-03T00:07:26.230 に答える
1

MouseDownイベントとMouseUpイベントを使用すると、クリックイベントをさらに制御できると思います。クリックイベントをさらに2つのイベントに分割して、イベントごとに詳細をコーディングできるようにします。Clickイベントは、マウスクリックを制限し、同じ関数で両方のイベントをコーディングするように強制します。

独自のドラッグ動作を作成しようとすると、この制限を理解できます。

  1. ドラッグは、ドラッグ動作を開始するためにマウスダウンイベントを必要とします。クリックイベントではできません。また、別のマウスダウンイベントが必要なためです。別のマウスアップイベントの要件が明らかになります。
  2. ドラッグが開始されたら(まだマウスボタンを離していない)、オブジェクトがカーソル位置に従って位置を変更する必要があります。これも、マウスダウンイベントでのみコーディングする必要があります。

ただし、ユーザーがオブジェクトをドラッグする方法を変更できる場合は、クリックイベントを使用することもできます。たとえば、click-1はドラッグを開始し、click-2はドラッグを停止して、オブジェクトを別の位置に配置します。しかし、私が見る2つの問題があります。

  1. 自然に見えません。現実の世界と同じように、私たちはオブジェクトを押してドラッグする習慣があります。
  2. クリックしてマウスを動かすだけで重いグラフィックを移動すると、プロセスが集中する可能性があります。
于 2020-04-18T05:37:00.590 に答える
0

私のコーディング方法に影響を与える最大の違いはclick、HTMLタグのイベントaがURLの変更を担当することです。対照的に、mousedownandmouseupイベントはこれを達成しません

于 2013-02-11T02:55:13.547 に答える
0

clickイベントはタッチ対応デバイスで機能しmouseupますが、機能しないという他の回答に追加したいと思いmousedownます(明らかに「マウス」がないため)

イベントのあるタッチデバイスでは300ミリ秒の遅延があることに注意してくださいclick

于 2018-09-06T20:43:19.803 に答える