克隆并附加新的可排序列表后,jQuery UI Sortable不会刷新

时间:2012-05-03 22:16:39

标签: javascript jquery html jquery-ui jquery-ui-sortable

好的,我在这里尝试做的是让jQuery UI更新页面上显示的可排序项,方法是通过克隆将新列动态添加到页面中。如果克隆列(演示页),新列应该能够从现有列列表中接收两个项目,以及可以从顶部的列表A拖动到其中一个可排序项目中的新项目。这适用于初始设置,但是一旦克隆并追加新列,事情就会中断;新克隆的列不会被识别为可放置的目标,我也无法将新项目从列表A拖到新克隆的列列表中。

直观地,可排序('刷新')命令应该足以使sortable检查设置中是否有任何更改,并启用新元素来接收和处理可排序项。但是,我在单击按钮时尝试执行此操作,但似乎没有效果。

我还试图直接调用' .columnlist'上的整个sortable()插件。选择器再次,希望它将初始化新的匹配元素,并简单地跳过已经排序的元素。

哦,当然我使用clone(true,true)来确保事件和数据随附。

请在此处查看演示页:http://labs.shifthappens.nl/dragsort/ 请尝试以下方法:

  1. 将项目从列表A拖到列列表A或B.拖动到可排序的工作
  2. 重新订购列表中的项目A.可排序的工作。
  3. 单击克隆按钮。出现C列的克隆。
  4. 尝试将任何项目(无论是从列表A还是从其他列列表中)拖到克隆的列C中,看哪:它没有响应。就好像它不存在一样。
  5. 有趣的是:如果您已经将项目放在原始列C中然后克隆它,那么克隆列中的项目可以移动到其他列表,但是一旦输出,就不能移回到克隆清单。好像它拒绝了它自己的后代。
  6. 如何使克隆列表成为可排序且有效的dropzones?

1 个答案:

答案 0 :(得分:0)

正如jaredhoyt指出的那样,确实是关于深度克隆。显然jquery ui不需要深度克隆元素,事实上如果你这样做就会中断,并期望新元素也是可以放弃的目标。

但是我确实发现需要在克隆列表的列上执行另一个$('selector')。sortable()。这是jaredhoyt在他的小提琴中所做的。这对我而言,直觉上“刷新”方法将是最优雅的解决方案,不是吗?

无论如何,案件已经结案。我很高兴它没有用数据和事件克隆列,只有HTML。