2012-04-23 2 views
0

У меня есть вертикальный список <ul> с элементами, которые связаны с обработкой событий jQuery's draggable. Когда какой-либо элемент списка перетаскивается, все элементы списка должны быть перетащены и отображены при перетаскивании.Поиск jQuery перетаскиваемой позиции курсора

Проблема: моя функция helper отображает перетаскиваемые элементы в неправильном вертикальном положении, если верхний элемент списка не перетаскивается (т. Е. Нажата и перетащена мышью). Это связано с тем, что я не знаю вертикального положения перетаскиваемого элемента. Если бы я знал это, я мог бы установить свойство cursorAttop, чтобы компенсировать это.

псевдокод:

$(list items).draggable({ 
    cursorAt: { 
     cursor: "crosshair", 
     left: 5, 
     top: ? // need to know vertical position of dragged item here... 
    }, 

Так что мой вопрос, есть ли способ, чтобы найти вертикальное положение перемещенного товара?

ответ

1

Пробовал несколько вещей, чтобы получить положение щелчка в атрибуте top, но это не сработает.

Так что я придумал обходной путь. Вместо того, компенсируя draggables с cursorAt, я использовал CSS хак (используя margin-top), чтобы переместить материал, который визуализируется при перетаскивании (устанавливается с помощью функции helper):

helper: function(e, ui) { 
     var compensateUp = e.pageY; 
     var helperHtml='<ul style="margin-top:-' + compensateUp + 'px;">'; 
     ... 

работает как шарм во всех основных браузерах.

Смежные вопросы