当鼠标按钮按下时,如何持续获取鼠标位置?
我知道可以这样做:
<element onclick="functionName(event)"></element>
<script>
function functionName(e){
e.pageX
e.pageY
//do stuff
}
</script>
我知道可以使用onmousedown事件,但是当按钮仍然按下时,如何连续获取位置呢?
奇怪的是我在任何我查找的地方都没有找到这个答案。
当鼠标按钮按下时,如何持续获取鼠标位置?
我知道可以这样做:
<element onclick="functionName(event)"></element>
<script>
function functionName(e){
e.pageX
e.pageY
//do stuff
}
</script>
我知道可以使用onmousedown事件,但是当按钮仍然按下时,如何连续获取位置呢?
奇怪的是我在任何我查找的地方都没有找到这个答案。
无论如何,我建议使用mousemove
事件,并检查which
事件属性是否等于1
(即左鼠标按钮按下):
$("element").on("mousemove", function(e) {
if (e.which == 1) {
console.log(e.pageX + " / " + e.pageY);
}
});
e.which == 1
真是太聪明了,我为什么没想到呢! - Bojangles这里有一个 JSFiddle。你需要将鼠标按钮的状态存储在变量中。
jQuery:
$(document).ready(function() {
$(document).mousedown(function() {
$(this).data('mousedown', true);
});
$(document).mouseup(function() {
$(this).data('mousedown', false);
});
$(document).mousemove(function(e) {
if($(this).data('mousedown')) {
$('body').text('X: ' + e.pageX + ', Y: ' + e.pageY);
}
});
});
在这里,我使用$(document).data()
将鼠标按键的状态存储在document
中。我也可以使用全局变量,但是用这种方式存储可以使代码更加简洁。
在你的$.mousemove()
函数中,只有当鼠标按下时才执行你想要的操作。在上面的代码中,我只是打印了鼠标的位置。