JQuery UI Draggable如何获取拖动开始位置

3

我可以拖动我的可拖动项并将它们放置在我的可放置项上,并从drop事件的ui.absolutePosition获取放置位置。我需要知道拖动开始的位置。

我尝试在拖动开始事件中获取ui.position,但这是null。我还尝试了拖动事件中的ui.position,但这是未定义的。

有什么想法吗?

2个回答

3
您可以在.droppable的drop函数中使用ui.draggable来获取您想要的内容。
ui.draggable.offset()

或许.

如果您想要在拖动开始时获得精确的鼠标位置,您可以在.draggable()启动函数中使用event.clientX和event.clientY。

$('selector').draggable({ ...options...
      start: function(event, ui) {
                   alert("You clicked x:" + event.clientX + " y:" + event.clientY);
             }
});

谢谢。保存client.x,client.y会得到我需要的内容。 - WJS

3
可能更好的方法是在数据中保存元素的起始位置。
jQuery("selector").draggable({
    start: function(event, ui) {
        // Log start dragged position to element data
        jQuery(this).data('startPosition', jQuery(this).position());
    }
});

这样你就可以稍后使用它,或在其他功能中使用它......例如:

stop: function(event, ui){
     Startpos = jQuery(this).data("startPosition");
     alert("DragStart : Left("
          + parseInt(Startpos.left) 
          + ")Top(" + parseInt(Startpos.top) +")"
     );
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接