我正在尝试构建一个待办事项列表。 http://d2burke.com/exp/todo/
我希望我的用户能够将项目标记为完整,此时项目将被下拉到“完成”列表,反之亦然。我还希望每个列表都可以独立排序。
我正在使用基本的自定义方法来回移动项目,我使用jQueryUI Sortable对它们进行排序。
所有这些我能够完成的事情;然而,似乎站点(DOM?)正在注册项目从一个列表移动到另一个列表。如果我将一个项目标记为“完成”,它会向下移动......并在“完整”列表中变为可排序,但我会以序列化格式回显当前位置(因为我将在db)并且应用程序似乎无法识别该项目已移动。
我想强制该应用在项目标记为完成或不完整时重新计算项目列表。
帮助?
答案 0 :(得分:0)
我看起来像你应该看一下可排序的resfresh方法:http://jqueryui.com/demos/sortable/
我会从.refresh()开始看看是否也会重新计算这些位置。我认为它确实如此,但如果不是,你可能也需要触发另一个。
答案 1 :(得分:0)
我会评论一些突出的事情: -
1)当你移动'一个项目,你移动得比你想要的多 - 移动的项目有一个' tbody'在它周围 - 你的代码非常脆弱,取决于parent.parent ...这将是一个噩梦维持。
2)你有各种parent.parent结构 - 失去这些转换为' .closest()'将树搜索到您要操作的项目类别。
3)你正在做绑定/取消绑定的事情 - 丢失它们并切换到' $(document.body).on(,...)'然后jquery将根据您的选择器自动添加/删除事件 - 链接一次并忘记。
完成此操作后,错误可能会消失 - 如果不是,它仍然会更清晰,因此可以正常调试!
此致
PS。如果是我,我想我会链接两个列表,以便它们可以一起排序,并在项目从一个列表移动到另一个列表时切换已完成的标志。
这样,用户可以通过两种方式更改状态,而jquery将执行所有驴工作,因为您只需对正常的链接列表进行排序。