マウスの左ボタンが押され続けている場合にのみmousemoveイベントがアクティブになり、ボタンが解放されるとすぐにmousemoveイベントが停止するようにjQueryを使用するにはどうすればよいですか?
回答:
回答№1は5ここでバインドします mousemove
マウスダウンのイベント、およびバインド解除 mouseup
。このセレクタに他のmousemoveイベントを追加できるように、jQueryでクールな機能を使用しましたが、バインドを解除したいものだけが削除されます。という 名前空間イベント.
$("#yourdivid").mousedown(function(e){
if(e.which == 1){
$(this).bind("mousemove.coolnamespace", function(e){
// Your mousemove event
});
}
}).mouseup(function(e){
if(e.which == 1) $(this).unbind("mousemove.coolnamespace");
})
編集: 正規化フィールドを使用するように回答を更新しました which
。 jQueryはこれを1 =左、2 =中間、3 =右に正規化します。の button
値はブラウザによって異なります。
回答№2の場合は1
簡単な方法は、フラグを保持することです。左ボタンが押されている間のみtrue。つまり、マウスの左ボタンを押したときにtrueに設定し、放したときにfalseにリセットする必要があります。次に、そのフラグがtrueの場合にのみmousemoveを操作します。
これはjQuery固有のソリューションではなく、このような問題の一般的なパターンであるため、jQueryはより優れたソリューションを提供する可能性があります。
入力フォーカスが失われたり、左ボタンが押されたままの状態でマウスカーソルがそのdivの外に出るなど、特別な場合に注意する必要があります。
回答№3の場合は0
mousedownイベントをバインドし、その関数内でmousemoveを呼び出し、jQuery unbindイベントを使用してmousemoveを取り除きます。
var $button = $("ELEMENT HERE");
$button.mousedown(function(){ $(this).mousemove(function(){ //Events here }); }).mouseup(function(){ $(this).unbind("mousemove"); });
</ pre></ code>