Jquery UI拖放元素的位置在第一滴上跳转

时间:2010-11-22 18:19:42

标签: jquery jquery-ui

所以我有这个项目,我正在努力,现在我卡住了:(

我的问题是,当我拖放项目时,我需要获取/设置相对于容器的位置,而不是整个身体,所以根据我的理解,我应该使用position()。我这样做是用

var pos=$(ui.helper).position();
objName = "#leaf"+counter++
$(objName).css({"left":pos.left,"top":pos.top});  

虽然这会在我拖入div后引入跳转。

我有这个工作,它会使用var pos = $(ui.helper).offset();给我绝对的左右值。并将我的容器(#treeContainer)设置为NOT CONTAIN“position:relative;”虽然这给了我相对于整个页面的绝对值!

非常感谢任何回复!

2 个答案:

答案 0 :(得分:0)

首先,删除#drag对象上的定位CSS。那些值转移到目标对象,并与您的目标冲突。或者,您可以在JS代码中将这些值重置为0.

#drag1 {
    width:74px;
    height:111px;
    float:right;
    background-color:#0F3;
}

#drag2 {
    width:74px;
    height:111px;
    float:right;
    background-color:#3C9;
}

接下来,在JS中,您需要使用减法使用父容器中的值来抵消topleft值。

      var pos = $(ui.helper).offset();
      var treePos = $('#treeContainer').offset();
      objName = "#leaf" + counter++;
      $(objName).css({"left": pos.left - treePos.left, "top": pos.top - treePos.top}); 

在这些更改之后,它可以正常工作。有关示例,请参阅http://jsbin.com/exoqu3/6

答案 1 :(得分:-1)

更改

#drag1 {
  width:74px;
  height:111px;
  float:right;
    background-color:#0F3;
}

这与你的利润有关。和他们一起玩,我相信你会得到它。