2011-10-17 127 views
0

对不起,问题标题有点模糊。jquery交换元素:元素ID已更改,但DOM未更新

我认为使用实时〔实施例,我可以更好地解释它:http://sumsy.com/temp/sorttest/

加js BIN链接:http://jsbin.com/ibewar/4/edit

我想这样做,通过点击“下移”,将交换当前div与下一个div。

我的做法是: 从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

我不会使用这个ID。 'data-sort-order =“1”'怎么样?另外,因为你是绝对定位的项目,我不认为DOM订单被改变。 – natedavisolds

+0

对不起,让我们说我没有太多的控制HTML标记。我不能添加'数据排序顺序=“1”到HTML。还有其他解决方案吗?谢谢。 –

回答

0

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

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

+0

太好了。很高兴知道问题是什么。现在我可以修复这个问题了。谢谢! –