Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript onmousedown事件不是连续事件?_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript onmousedown事件不是连续事件?

Javascript onmousedown事件不是连续事件?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我想要用户连续按住鼠标按钮时的鼠标位置 我尝试使用以下代码执行以下操作: $(div).mousedown(function(eventObj){ console.log(eventObj.clientX); }); 但是,当用户按下鼠标按钮时,此代码仅给出一次鼠标位置。您可以使用mousedown和mouseup设置一个标志-可能是mousedown,然后您可以使用clientX和clientY在需要的地方提供该信息。您可能正在查找onMouseMove事件。您应该做的是onMo

我想要用户连续按住鼠标按钮时的鼠标位置

我尝试使用以下代码执行以下操作:

$(div).mousedown(function(eventObj){
    console.log(eventObj.clientX);  
});

但是,当用户按下鼠标按钮时,此代码仅给出一次鼠标位置。

您可以使用mousedown和mouseup设置一个标志-可能
是mousedown
,然后您可以使用clientX和clientY在需要的地方提供该信息。

您可能正在查找
onMouseMove
事件。您应该做的是
onMouseDown
开始收听
onMouseMove
事件,然后
onMouseUp
停止收听。示例代码如下所示:

$(div).mousedown(function(eventObj){
    $(div).mousemove(function(evt){
        console.log(''+evt.pageX+', '+evt.pageY);
    });  
});
$(div).mouseup(function(eventObj){
    $(div).off( "mousemove" );
});

例如,您可以使用
setInterval
函数在鼠标按钮按下时反复调用函数,然后在松开鼠标按钮时使用
clearInterval
停止。下面是一个示例(使用jQuery):


这里有一种模拟mousedrag事件的方法。基本上,在mouseDown上,isDraging布尔值设置为true,然后在mouseMove中检查isDraging是否为true,如果是,则执行一些操作。在mouseUp上,我将isDraging设置回false。我找到的最简单的方法

var isDragging=false;
/***
*跟踪拖动--在mousedown上,我设置
*这是真的,然后我检查一下
*此元素上的鼠标移动。
*-在mouseup上,我将IsDraging重置为false,
*从而结束模拟拖动事件。
***/
$(“.slide control”).on(“mousemove”,函数(evt){
if(ISDRAGING){
console.log(evt.pageX+”,“+evt.pageY);
}
}).on(“mouseup”,function(){
//拖动事件结束后,将切换设置为禁用。
IsDraging=错误;
}).on(“mousedown”,function(){
IsDraging=true;
});

Lorem ipsum dolor sit amet,是一位杰出的献身者。Donec rutrum congue leo eget malesuada。库拉比图尔·阿库埃拉特(Curabitur arcu erat)、阿库姆桑帝国(accumsan id Impertet)、港口码头(sem)。无门,无门,无门,无门。在布朗迪特酒馆的馆长


维瓦摩斯寄托着猫的身体。这是一个很好的例子,它是一个很好的例子。不可为空的策展人必须为自己的利益而奋斗。乌尔里西斯·利古拉是一位伟大的政治家。Proin eget tortor risus.

实现这一点的最简单方法是将mousemove事件放入mousedown事件中,以便当mousedown事件触发mousemove事件时,该事件也会持续触发。这允许在按住鼠标按钮时跟踪鼠标位置。添加了mouseup事件,以便在发布时停止从mousemove事件跟踪鼠标位置


很抱歉,这不是完全连续的,但取决于应用程序,这仍然是有用的。嗯,这确实有效。看我的例子。我使用mousedown/mouseup设置IsDraging布尔值,然后如果IsDraging的值为真,则mouseMove执行某些操作。它允许您模拟mousedrag事件。我唯一不喜欢这种方法的一点是,事件不断地触发。在我的解决方案中,mousemove事件仅在按下鼠标按钮时触发。虽然不太可能对性能产生影响,但在一个有很多事件和事情的页面上,它可以做一些事情。虽然基本上只是原则。没错,它一直在发射——但事实是,它一直在发射。如果您使用的是jQuery,则会触发触发器。我只需每次检查,并仅在设置布尔值时截取它。这是一个偏好的问题,但我看到了两者的价值。您编写的函数不会被触发,除非它已注册。的确,浏览器必须做一些事情来检查函数是否连接到该事件,但这并不是创建JavaCScript调用堆栈等。浏览器不是用JS编写的,因此速度要快得多。让事件侦听器持续运行没有任何价值,除非您还想在不按下鼠标按钮时更新移动,那就没办法避免了。正如我所说的,我看到了你的方法的价值。我只是不喜欢把mousemove调用嵌套在mousedown中,但那就是我。现实是,任何一种方法都是笨拙的。我们只是在争论哪种方法不那么笨拙。纯粹主观地说。。。不,是的,这样做的好处是,即使鼠标不动,它也会启动。按请求编辑。我的第一个答案,所以我想我只是忘记了可能进入页面的人可能需要更好地解释代码的作用。很抱歉
var interval;
$("#div").mousedown(function(eventObj) {
    interval = setInterval(performWhileMouseDown(eventObj), 100);
}).mouseup(function() {
    clearInterval(interval);  
});
function performWhileMouseDown(eventObj) {
    console.log(eventObj.clientX);
}
$(

"#test").mousedown(function(eventObj) {
  $("#test").mousemove(function(event) {
    var pageCoords = "( " + event.pageX + ", " + event.pageY + " )";
    var clientCoords = "( " + event.clientX + ", " + event.clientY + " )";
    $("span:first").text("( event.pageX, event.pageY ) : " + pageCoords);
    $("span:last").text("( event.clientX, event.clientY ) : " + clientCoords);
  });
});

$("#test").mouseup(function(eventObj) {
  $("#test").unbind('mousemove');
});