gpt4 book ai didi

javascript - mouseup 事件并不总是被触发

转载 作者:行者123 更新时间:2023-11-29 17:25:11 27 4
gpt4 key购买 nike

我有一个功能可以让我四处拖动东西。我的 js:

  $(function() {
$( svgcanv ).css('cursor', '-moz-grab');

var leftButtonDown = false;
$(document).mousedown(function(e){
console.log('pressed');
// Left mouse button was pressed, set flag
if(e.which === 1) leftButtonDown = 1;
});

$(document).mouseup(function(e){
console.log('released');
// Left mouse button was released, clear flag
leftButtonDown = 0;
$( svgcanv ).css('cursor', '-moz-grab');
firstDragCanvas = 1;
});

$( mainGroup ).mousemove(function(e){
if (leftButtonDown == 1)
{
$( svgcanv ).css('cursor', '-moz-grabbing');
var posX = e.pageX;
var posY = e.pageY;
if (firstDragCanvas == 0)
{
posX = e.pageX - canvasPosX;
posY = e.pageY - canvasPosY;
}
else
{
canvasPosX = e.pageX - translateX;
canvasPosY = e.pageY - translateY;
posX = translateX;
posY = translateY;
firstDragCanvas = 0;
}

if (posX > 0)
posX = 0;

if (posX < -canvasWidth + $("#holder").width())
posX = -canvasWidth + $("#holder").width();

translateX = posX;
translateY = posY;

mainGroup.setAttribute("transform","translate("+posX+","+posY+") scale("+currentZoomLevel+")");
}
});
});

问题是 mouseup 事件并不总是被触发。其他 2 个工作正常。我第一次四处移动一切正常。但其次,如果我立即按下并拖动,则不会触发 mouseup。如果我停止拖动,单击某处然后再次拖动脚本再次正常工作。

我的控制台(有 2 次拖动,然后单击然后再次拖动。注意 2 个连续的“按下”字符串 - 从 mousedown 记录):

enter image description here

不……那是一个 SVG,需要在其中拖动,所以不能使用 jQuery draggable。

最佳答案

尝试添加 e.preventDefault();在 each 事件方法中阻止任何默认的 UA 事件。

例如

$(document).mousedown(function(e){
e.preventDefault();
console.log('pressed');
// Left mouse button was pressed, set flag
if(e.which === 1) leftButtonDown = 1;
});

等等……

关于javascript - mouseup 事件并不总是被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410112/

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