我有一个垂直<ul>
列表,其中包含附加了jQuery draggable
事件处理的项目。拖动任何列表项时,拖动时会拖动所有列表项并进行渲染。
问题:我的helper
函数将拖动的项目呈现在不正确的垂直位置,除非最上面的列表项是拖动的项(即用鼠标按钮单击并拖动)。这是因为我不知道拖动项目的垂直位置。如果我知道,我可以设置cursorAt
top
属性来抵消这个。
伪代码:
$(list items).draggable({
cursorAt: {
cursor: "crosshair",
left: 5,
top: ? // need to know vertical position of dragged item here...
},
所以我的问题是,有没有办法找到被拖动物品的垂直位置?
答案 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;">';
...
在所有主流浏览器中都像魅力一样。