Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
jquery快速拖动对象问题_Jquery_Draggable_Performance - Fatal编程技术网

jquery快速拖动对象问题

jquery快速拖动对象问题,jquery,draggable,performance,Jquery,Draggable,Performance,如果我把一个物体拖得很慢,它会做我想让它做的事情。但是,如果我做得快一点或非常快,它就不会像预期的那样工作。您可以看到两种结果:缓慢拖动时的预期结果和快速拖动时的完美结果。我只是一个jquery初学者,如果你看到JS代码中其他愚蠢的部分,请告诉我 背景中的移动对象(拖动可拖动对象时)应每移动20个像素,就返回其原始位置。当快速移动时,它不会这样做,但是,当缓慢拖动触发器时,它会这样做 现场示例: p、 s.仅向上/下方向拖动 仅JS部分(使用jQuery UI) $().ready(函数()){

如果我把一个物体拖得很慢,它会做我想让它做的事情。但是,如果我做得快一点或非常快,它就不会像预期的那样工作。您可以看到两种结果:缓慢拖动时的预期结果和快速拖动时的完美结果。我只是一个jquery初学者,如果你看到JS代码中其他愚蠢的部分,请告诉我

背景中的移动对象(拖动可拖动对象时)应每移动20个像素,就返回其原始位置。当快速移动时,它不会这样做,但是,当缓慢拖动触发器时,它会这样做

现场示例:

p、 s.仅向上/下方向拖动

仅JS部分(使用jQuery UI)

$().ready(函数()){
//地图测量
var mapWidth=parseInt($('#map').width();
var mapHeight=parseInt($('#map').height();
var片段h=20;
var片段w=20;
//要使用的映射片段数
var mapBlocksH=Math.ceil(mapHeight/fragmentH)+2;
var mapBlocksW=Math.ceil(mapWidth/fragmentW)+2;
//地图碎片置换的面积大小
var mapH=mapBlocksH*fragmentH;
var mapW=mapBlocksW*fragmentW;
//计算地图碎片包装器位置、尺寸
$(#map div.map,div.drag').css({height:mapH,width:mapW,left:(mapWidth-mapW)/2,top:(mapHeight-mapH)/2});
对于(i=0;i
拖动对象时,对象不会占据所有可能的位置,而是跳过一些像素

我记录.top位置,其值为8、11、18、27,因此很少出现这种情况

Math.abs($('#map div.map').offset().top-$('#map').offset().top) % fragmentH == 0
这是真的

就你的情况而言,最好有

Math.abs($('#map div.map').offset().top-$('#map').offset().top) >= fragmentH

这只取决于你到底想做什么,但不要在像素运算中使用模运算&拖动,这是个坏主意!

当你拖动一个对象时,该对象不会占据所有可能的位置,而是跳过一些像素

我记录.top位置,其值为8、11、18、27,因此很少出现这种情况

Math.abs($('#map div.map').offset().top-$('#map').offset().top) % fragmentH == 0
这是真的

就你的情况而言,最好有

Math.abs($('#map div.map').offset().top-$('#map').offset().top) >= fragmentH

这只取决于你到底想做什么,但不要在像素运算和拖动中使用模运算,这是个坏主意!

只是一个旁注,
$()。ready(function(){
已弃用,你应该使用
$(function(){
$(document)。ready(function(){
:)谢谢。在原始代码中修复。只是旁注,
$().ready(function(){
已弃用,您应该使用
$(function(){
$(文档)。ready(function(){
:)谢谢。在原始代码中已修复。我确实理解jquery在快速拖动时不会记录所有位置。这正是我试图解决的问题。您的解决方案对我没有好处。我需要知道Math.abs($('.'map div.map').offset().top-$('.'map').offset().top)的确切时间%fragmentH==0是正确的。请尝试解释为什么需要这个确切的条件,我们将尝试找到一个解决方案。我们需要一个上下文!我正在制作一个谷歌地图原型。我需要它来显示一些本地地图&我需要它在jQuery上运行。基本的想法是,当颜色框区域移动超过20px(地图片段的大小)时地图显示区域应该回到主位置,只改变背景图像。谷歌地图基本上是这样工作的(不过他们使用绝对定位附加)因此,您需要跟踪拖动何时结束对象的位置,如果它在地图片段之外,则重新居中并更改背景。将您的代码放入stop事件中,并测试对象的位置。我确实理解,快速拖动时,jquery不会记录所有位置。这正是我正在尝试的问题我需要知道Math.abs($('map div.map').offset().top-$('\ map').offset().top)的确切时间%fragmentH==0是正确的。请尝试解释为什么需要这个确切的条件,我们将尝试找到一个解决方案。我们需要一个上下文!我正在制作一个谷歌地图原型。我需要它来显示一些本地地图&我需要它在jQuery上运行。基本的想法是,当颜色框区域移动超过20px(地图片段的大小)时地图显示区域应该回到主位置,只改变背景图像。谷歌地图基本上是这样工作的(不过他们使用绝对定位附加)因此,您需要跟踪拖动何时结束对象的位置,如果它在地图片段之外,请重新居中并更改背景。将您的代码放入停止事件中,然后测试对象的位置。