'onmousedrag'事件js

时间:2011-07-25 16:05:10

标签: javascript javascript-events

我有一些代码可以在每次onmouseclick上工作,并且当我相应地设置它们时,我们会继续onmousemove。我正在寻找一种方法来结合两者(即像点击和拖动),我认为这将是一个简单的任务,但找不到任何简单的解释。我得到的最接近的是拖放教程。

触发onmouseclick事件时,是否必须调用onmousemove事件?或者有什么非常简单的我完全忽视了吗?

干杯

5 个答案:

答案 0 :(得分:10)

您可能只想使用这样的标记:http://jsfiddle.net/n3MeH/

var isMouseDown = false;
document.onmousedown = function() { isMouseDown = true  };
document.onmouseup   = function() { isMouseDown = false };
document.onmousemove = function() { if(isMouseDown) { /* do drag things */ } };

答案 1 :(得分:4)

您可以尝试这样的事情:

var div = document.getElementById('ex');

div.onmousedown = function(){
    document.onmousemove = function(e){
        div.innerText = '('+e.pageX +', '+e.pageY+')';
    }
    document.onmouseup = function(e){
        div.innerText = 'Click Me!';
        document.onmousemove = function(){};
    }
}

它将文件mousemove和mouseup事件绑定在divs mousedown上。

http://jsfiddle.net/Paulpro/cSKq2/

答案 2 :(得分:0)

如果我理解正确,我认为您只想将onmouseclick分成onmousedownonmouseup(就像设置一个可拖动的bool,然后在鼠标上恢复它...但是既然你说你找到的最接近的是拖放信息,也许你的意思是其他什么?)

答案 3 :(得分:0)

非常简单......我希望:)

触发mousedown事件时,将全局“拖动”变量设置为true。然后,当触发mouseup时,将其设置为false。

答案 4 :(得分:0)

如果您不想使用全局变量进行拖动,可以使用event.buttons来确定按下哪个鼠标按钮。

我在Chrome和Firefox中测试了此代码。

document.onmousemove = function(event) {
    if(event.buttons == 1) { //dragged with left mouse button
        //your code
    }

    if(event.buttons > 0) { //dragged with any mouse button
        //your code
    }
}