jquery交换元素:元素ID已更改但DOM未更新

时间:2011-10-17 23:52:24

标签: jquery

抱歉,问题标题有点模糊。

我想我可以使用实时例证来更好地解释它: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标记中它仍然显示为第一个。

任何帮助都将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

这是因为交换函数实际上并没有重新排序DOM,如果你注意到(使用firebug),它只是使元素相对位置。因此,您不能依赖他们在DOM中的位置来确定他们的id。

你应该做的是交换动画完成后,物理移动DOM中的元素。您需要清除swap方法设置的定位。要重新排序DOM中的元素,可以使用after方法。