查找jQuery可拖动游标位置

时间:2012-04-23 13:21:31

标签: position jquery-ui-draggable

我有一个垂直<ul>列表,其中包含附加了jQuery draggable事件处理的项目。拖动任何列表项时,拖动时会拖动所有列表项并进行渲染。

问题:我的helper函数将拖动的项目呈现在不正确的垂直位置,除非最上面的列表项是拖动的项(即用鼠标按钮单击并拖动)。这是因为我不知道拖动项目的垂直位置。如果我知道,我可以设置cursorAt top属性来抵消这个。

伪代码:

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

所以我的问题是,有没有办法找到被拖动物品的垂直位置?

1 个答案:

答案 0 :(得分:1)

尝试了一些将点击位置转换为top属性的内容,但它不起作用。

所以我想出了一个解决方法。我使用CSS hack(使用cursorAt)来移动拖动时呈现的内容(由margin-top函数设置),而不是使用helper来抵消可拖动的内容:

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

在所有主流浏览器中都像魅力一样。