2009-08-13 3 views
3

Я могу перетащить свои перетаскиваемые элементы и опустить их на свои droppables и получить положение кавычки от ui.absolutePosition на событие drop. Мне нужно знать, с какой позиции началось перетаскивание. Я попытался получить ui.position на событии начала перетаскивания, но это null. Я также пробовал ui.position на событии перетаскивания, но это не определено.JQuery UI Draggable, как получить начальную позицию перетаскивания

Любые идеи?

ответ

3

Вы можете использовать ui.draggable из функции drop.droppable, чтобы получить то, что вам нужно.

ui.draggable.offset() 

возможно.

Если вы хотите, точное положение мыши на начало перетаскивания, вы можете использовать event.clientX и event.clientY на .draggable() Функция запуска

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

Спасибо. Сохраняя client.x, client.y дает то, что мне нужно. – WJS

2

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

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) +")" 
    ); 
} 
Смежные вопросы