1

.click()の jQuery ドキュメントによると、イベントは次の一連のイベントの後にのみトリガーされます。

  • ポインタが要素内にあるときにマウス ボタンが押された。
  • マウス ボタンは、ポインターが要素内にある間に離されます。

私が直面している問題は、クリックイベントを登録したいアイテムのグリッドで「クリックしてドラッグ」機能を使用していることです。これは、クリックしてドラッグするたびに、マウスがアイテム上で押され、ドラッグが発生した後に同じアイテム上で離されることを意味します。これにより、クリック イベントが発生します。

マウスが押されたときからマウスが離されたときまでの間にマウスが移動していない場合にのみ、イベントを発生させる方法はありますか? これは些細なことのように思えますが、jQuery 初心者の私はちょっと困惑しています。

4

4 に答える 4

3

@adeneo のコードを少し修正したので、ユーザーがカーソルを「ほんの少しだけ」動かして、実際にはクリックとして解釈する必要があるという問題が解決されました。これにはユークリッド距離を使用しました。Math.sqrtパフォーマンスを向上させるために を削除できますが、radiusLimit変数を調整する必要があります。

var left = 0,
    top = 0,
    radiusLimit = 5;

$(element).on({
  mousedown: function(event) {
    left = event.pageX;
    top = event.pageY;
  },
  mouseup: function(event) {
    var deltaX = event.pageX - left;
    var deltaY = event.pageY - top;
    var euclidean = Math.sqrt(deltaX * deltaX + deltaY * deltaY);

    if (euclidean < radiusLimit) {
      console.log("this is a click.");
    }
  }
});
于 2015-07-09T09:46:19.667 に答える