【发布时间】:2012-02-16 20:19:59
【问题描述】:
我正在寻找一种方法来获得类似 JQuery 的可排序列表 (link),但其中一些元素位于固定的不可拖动位置。
使某些元素不可拖动很简单,但它们的位置不会保持固定,因为它们上方和下方的可拖动元素的数量可以改变。
更具体地说: 我有一个按等级排列的 10 个项目的列表。我希望用户能够通过拖动(可排序列表)来更改某些项目的排名,但不能更改其他冻结元素的排名。标准的 JQuery 可排序不可拖动功能允许通过更改冻结项上方或下方的元素数量来更改冻结项的排名。
我尝试在拖动时通过“交换”列表元素手动执行此操作。即,当一个列表元素被拖动到一个非冻结元素上时,两个元素的位置被交换。这给出了我想要的语义,但是被拖动的项目明显地在其新位置和当前“拖动”位置之间“跳跃”。 (我希望它保持在当前的拖动位置;只有它在 DOM 中的位置应该改变。但是当 DOM 位置改变时,必须重新计算拖动偏移坐标。而且我不知道如何同时改变 DOM 位置并拖动偏移坐标原子地更改,防止两者之间重绘。目前,有时两者之间会发生重绘,并且元素明显(尽管很短)跳跃。)
编辑 这是一个显示我的手动方法的 jsfiddle: link。玩一会儿,你会注意到我提到的闪烁/跳跃。
【问题讨论】:
-
您是否尝试将您的行为绑定到
beforeStop事件? -
这听起来很有趣,我猜你已经有了一些几乎可以工作的代码?请考虑用你所拥有的创建一个 jsfiddle!
-
@LinusGThiel,我添加了一个指向显示我手动尝试的 jsfiddle 的链接。
-
@graphicdivine,你能扩展一下吗?我应该在
beforeStop上添加什么行为?
标签: javascript jquery jquery-ui