首页 文章

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

提问于
浏览
0

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

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

我还试图直接调用'.columnlist'选择器上的整个sortable()插件,希望它会在新的匹配元素上初始化,并且只是跳过已经排序的元素 .

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

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

  • 将项目从列表A拖到列列表A或B.拖动到可排序的工作

  • 重新列出列表中的项目A.可排序的工作 .

  • 单击克隆按钮 . 出现C列的克隆 .

  • 尝试将任何项目(无论是从列表A还是从其他列列表中)拖动到克隆列C,看哪:它没有响应 . 就好像它不存在一样 .

  • 有趣的是:如果您已经将项目放在原始列C中然后克隆它,则克隆列中的项目可以移动到其他列表,但一旦输出,就无法移回克隆列表 . 好像它拒绝了它自己的后代 .

如何使克隆列表成为可排序和有效的dropzones?

1 回答

  • 0

    正如jaredhoyt所指出的,它确实是关于深度克隆 . 显然jquery ui不需要深度克隆元素,实际上如果你这样做会中断,并期望新元素也是可以删除的目标 .

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

    无论如何,案件结案 . 我很高兴它就像没有用数据和事件克隆列一样简单,只有HTML .

相关问题