2012-04-23 96 views
0

我有一个垂直<ul>列表,其中包含jQuery的draggable事件处理附加项。当拖动任何列表项时,全部列表项将拖动并在拖动时进行渲染。查找jQuery可拖动光标位置

问题:我的helper函数渲染拖动的项目不正确的垂直位置,除非最顶端的列表项是拖动的项目(即用鼠标按钮单击并拖动)。这是因为我不知道拖动项目的垂直位置。如果我知道这一点,我可以设置cursorAttop属性来抵消这一点。

伪代码:

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

所以我的问题是,有没有办法找到拖曳的项目的垂直位置?

回答

1

尝试了很多事情来获取点击位置为top属性,但它不起作用。

所以我想出了一个解决方法。相反,与cursorAt抵消拖拽元素的,我用了一个CSS破解(利用margin-top)移动拖动时呈现的东西(通过helper功能设置):

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

的工作原理是在所有主要浏览器中的魅力。