碰撞检测:为什么其他物体的偏移量如此之大?

时间:2017-02-24 00:46:43

标签: 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);
      }
    });
  }
});
});

Ring Layout with 50 nodes

1 个答案:

答案 0 :(得分:0)

注意所有大数字是如何以100结尾的。这是因为当您向字符串添加数字时,该数字将转换为字符串。随着操作顺序从左到右,您得到:

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

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

你想要的是这个:

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

这意味着在将数字添加到字符串之前将它们加在一起。