gpt4 book ai didi

events - jQuery 鼠标移动 : trigger on change of 5px

转载 作者:行者123 更新时间:2023-12-01 01:26:28 25 4
gpt4 key购买 nike

出于多种技术原因,我在 jQuery 上实现自己的“可拖动”功能,而不是使用 jQuery UI,并且我使用 mousedown 和 mousemove 事件来监听尝试拖动元素的用户。

到目前为止效果很好,我只想每移动 5 px 就触发 mousemove 事件,而不是逐像素触发。我尝试编写一个简单的代码:

$('#element').bind('mousemove', function(e) {
if(e.pageX % 5 == 0) {
// Do something
}
});

但是,每5个像素的移动就不稳定,有时如果你移动鼠标太快,它会跳过几个步骤。我认为这是因为当鼠标移动得非常快时,jQuery不会在每个像素上触发该事件。

你们知道如何每 5 个像素触发一次事件吗?

非常感谢,

安东尼奥

最佳答案

您的代码没有考虑拖动开始的位置。 e.pageX 只会为您提供页面坐标,而不是差异。您需要检查移动距离的变化。

This post非常相关。

这是基本代码:

$(document).mousemove(function(event) {
var startingTop = 10,
startingLeft = 22,
math = Math.round(Math.sqrt(Math.pow(startingTop - event.clientY, 2) +
Math.pow(startingLeft - event.clientX, 2))) + 'px';
$('span').text('From your starting point(22x10) you moved: ' + math);
});

编辑:现在我想我明白OP在说什么了。我使用上面的代码得出 this fiddle 。它会跟踪您相对于屏幕左上角的当前位置,并检查您的差异是否 > 5 个像素。

新脚本:

var oldMath = 0;
$(document).mousemove(function(event) {
var startingTop = 10,
startingLeft = 22,
math = Math.round(Math.sqrt(Math.pow(startingTop - event.clientY, 2) +Math.pow(startingLeft - event.clientX, 2))) + 'px';
$('#currentPos').text('you are at :' + math);

if(Math.abs(parseInt(math) - oldMath) > 5){
//you have moved 5 pixles, put your stuff in here
$('#logPos').append('5');


//keep track of your position to compare against next time
oldMath = parseInt(math);
}
});​

关于events - jQuery 鼠标移动 : trigger on change of 5px,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12791549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com