Перетаскиваемая позиция Jquery - клон

У меня есть jquery draggable/droppable, работающий с набором опций сдерживания и помощника. Что я хотел бы сделать, так это сохранить верхний и левый параметры отброшенного элемента в двух переменных.

Я добился этого в следующем примере (перетащите значок нового документа в поле), однако позиция, о которой сообщается, является позицией относительно исходного значка, а не родительского DIV. И значок, и выпадающее поле имеют абсолютное позиционирование.

http://www.instructuk.com/drop.php

Кто-нибудь знает, как получить позицию, относящуюся к родителю, а не к значку?


person Rob    schedule 10.05.2011    source источник


Ответы (2)


Вам придется сделать расчет самостоятельно:

var
  draggableDocumentOffset = ui.helper.offset(),
  droppableDocumentOffset = $(this).offset(),
  left = draggableDocumentOffset.left - droppableDocumentOffset.left,
  top = draggableDocumentOffset.top - droppableDocumentOffset.top;

alert('Item was dropped at - Left: ' + left + ', Top: ' + top); 
person brianpeiris    schedule 10.05.2011
comment
@brianpeiris, могу я попросить вас взглянуть на вопрос, связанный с перетаскиванием jQuery, здесь: stackoverflow.com/questions/54498364/ ? - person Istiaque Ahmed; 03.02.2019

Возможно, это не самое красивое решение, но вы можете получить положение капли в документе:

x=event.pageX;
y=event.pageY;

А затем используйте координаты области сброса, чтобы вычесть из x и y.

dx=$("#droparea").offset().left;    
dy=$("#droparea").offset().top;    
var left=x-dx;          
var top=y-dy;   

K

person kwicher    schedule 10.05.2011
comment
Обратите внимание, что результат этого расчета будет меняться в зависимости от того, где вы поместили курсор на значке, когда начали перетаскивание. - person brianpeiris; 10.05.2011
comment
Это правда. Ваше решение намного лучше. - person kwicher; 10.05.2011