javascript - 碰撞检测: Why is other object's offset so large?

标签 javascript jquery jquery-ui

我试图在拖动时循环遍历每个 div,并根据它们的偏移量计算它们是否相交。可拖动 div 的偏移量计算正确,但其他 div 注册为一个疯狂的大数字(100,000)。我究竟做错了什么?

$(function() {
$(".table").draggable({
  drag: function(ev, ui)
  {
    var offset = $(this).offset();
    $(this).attr("id", "currentDrag");
    $(".table").not("#currentDrag").each(function() {
      var otherOffset = $(this).offset();
      if(offset.left + 100 > otherOffset.left)
      {
        console.log("collision");
        console.log("drag Offset: " + offset.left);
        console.log("other Offset: " + otherOffset.left + 100);
      }
    });
  }
});
});

http://jsbin.com/coxemuqogo/edit?js,console,output

最佳答案

请注意所有大数字都以 100 结尾。这是因为当您将数字添加到字符串时,数字会转换为字符串。按照从左到右的操作顺序,您将得到:

'other Offset: ' + 11 + 22 = 'other Offset: 1122'

因为 11 被添加到字符串中,所以 22 被添加到包含“11”的字符串中。

你想要的是这样的:

'other Offset: ' + (otherOffset.left + 100)

这意味着数字在添加到字符串之前会先相加。

关于javascript - 碰撞检测: Why is other object's offset so large?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42428893/

相关文章:

javascript - jQuery - 更改文本 slider 的位置

javascript - 更新 Jquery UI Sortable 以显示最新值

javascript - 如何在 iPad 中通过 javascript 停止 Youtube 视频(不是 HTML5)

javascript - 如何在多个组合框 JQuery 中禁用选择时的组合框值?

javascript - 使用 ngAnimate 时,通过 ng-if 删除元素会被延迟

javascript - 缩放至一组要素 (OpenLayers 4)

javascript - 以指数方式更改 html slider 步长

javascript - document.body 上的单击事件在 IE8 上无法正常工作

jquery-ui - 悬停时在右侧显示编辑图标

jquery - Chrome 中可调整大小的 Div 在缩放时导致内容偏移