/ / jQuery:イベントに関する質問-javascript、jquery、javascript-events

jQuery:イベントに関する質問 - javascript、jquery、javascript-events

マウスの左ボタンが押され続けている場合にのみ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>