我想我可以使用实时例证来更好地解释它:http://sumsy.com/temp/sorttest/
ADDED JS BIN链接:http://jsbin.com/ibewar/4/edit
我想要做的是,点击“向下移动”,它会将当前div与下一个div交换。
我的方法是: 将div ID设置为0到3 每次交换/向下移动时,它始终是目标div id =当前div id + 1的情况 交换完成后,再次重置ID,从0到3,以维持订单。
问题: 尝试点击“文字A(向下移动)”,它包含文字B没问题。 再次单击“文本A(向下移动)”,它应与C交换,因为A的ID应为2,C为3。 但问题是,A再次与B交换。
在交换后看起来DOM没有更新/刷新?
A是列表中的第二个,但不知何故在html标记中它仍然显示为第一个。
任何帮助都将不胜感激。
感谢。
答案 0 :(得分:0)
这是因为交换函数实际上并没有重新排序DOM,如果你注意到(使用firebug),它只是使元素相对位置。因此,您不能依赖他们在DOM中的位置来确定他们的id。
你应该做的是交换动画完成后,物理移动DOM中的元素。您需要清除swap方法设置的定位。要重新排序DOM中的元素,可以使用after方法。