5

イベントの処理にはJQuery1.7を使用しています。

function objToStr(obj) {
    return ...string representation of the object
}
$slider.mousedown(function(e) {
    console.log("$slider.mousedown:\n" + objToStr(e) );
});

$slider.mousemove( function(e) {
    console.log("$slider.mousemove:\n" + objToStr(e) );
});

結果は次のとおりです。

$slider.mousedown: 
altKey = false
 attrChange = undefined 
attrName = undefined 
bubbles = true 
button = 0 
buttons = undefined 
cancelable = true 
clientX = 319 
clientY = 13 
ctrlKey = false 
currentTarget = object 
data = null 
delegateTarget = object 
eventPhase = 3 
fromElement = undefined 
handleObj = object
isDefaultPrevented = (function) 
isImmediatePropagationStopped = (function) 
isPropagationStopped = (function) 
jQuery17209754494933906718 = true 
metaKey = false 
offsetX = undefined 
offsetY = undefined 
originalEvent = object 
pageX = 319 
pageY = 13 
preventDefault = (function) 
relatedNode = undefined 
relatedTarget = null 
screenX = 2876 
screenY = 223 
shiftKey = false 
srcElement = undefined 
stopImmediatePropagation = (function) 
stopPropagation = (function) 
target = object 
timeStamp = 869699957 
toElement = undefined 
type = "mousedown" 
view = object 
which = 1


$slider.mousemove: 
currentTarget = object
data = null 
delegateTarget = object 
exclusive = undefined 
handleObj = object 
isDefaultPrevented = (function) 
isImmediatePropagationStopped = (function) 
isPropagationStopped = (function) 
isTrigger = true 
jQuery17209754494933906718 = true 
namespace = "" 
namespace_re = null 
preventDefault = (function) 
result = undefined 
stopImmediatePropagation = (function) 
stopPropagation = (function) 
target = object 
timeStamp = 1334151903323 
type = "mousemove"

アクセスする必要がありますe.whichmousemove、どうやらイベントハンドラーに渡されていませんか?

jQueryで提案されているフラグアルゴリズムを使用したくありません:mousemoveイベント中に押されたマウスボタンを検出します。ユーザーがマウスボタンをブラウザウィンドウの外にドラッグして離すと、マウスがブラウザウィンドウに戻ったときに、まだ押されていると見なされるためです。次に、マウスがウィンドウを離れるときのハンドラーも追加する必要があります。のイベントハンドラでどのマウスボタンが押されたかを知るためのより簡単な方法はありmousemove()ますか?

4

2 に答える 2

3

これは移動イベントであるため、特にイベントが頻繁に発生するため、その時点でどのキーが押されたかを知ることは最重要または効率的とは見なされていなかったと思います。mouseupしたがって、とのイベントが必要ですmousedown

var leftMButtonDown = false;

$slider.mousedown(function(e) {
    if(e.which === 1) leftMButtonDown = true;
});

$(document).mouseup(function(e) {
    if(leftMButtonDown && e.which === 1) leftMButtonDown = false;
});

$slider.mousemove(function(e) {
    if(leftMButtonDown == true) {
        console.log('Left mouse button was down on mousemove event');
    }
});

そして、マウスの右ボタンなどにさらに変数を追加する必要があります

于 2012-04-12T19:49:00.753 に答える
1
<body>
<div id="div" style=" height: 100px; border:1px solid red"></div>

<script>
  document.mouseState=-1; //global check mouse state

  document.onmousedown=function(e){
    document.mouseState=e.button;
  }
  document.onmouseup=function(e){
    document.mouseState=-1;
  }

  var d=document.getElementById('div');
  d.onmousemove= function(e){
    d.innerHTML+='; '+document.mouseState;

  }

</script>
</body>
于 2016-06-15T06:52:10.260 に答える