jQuery可排序待办事项列表

时间:2011-04-10 04:22:36

标签: jquery-ui drag-and-drop jquery-ui-sortable

我正在尝试构建一个待办事项列表。 http://d2burke.com/exp/todo/

我希望我的用户能够将项目标记为完整,此时项目将被下拉到“完成”列表,反之亦然。我还希望每个列表都可以独立排序。

我正在使用基本的自定义方法来回移动项目,我使用jQueryUI Sortable对它们进行排序。

所有这些我能够完成的事情;然而,似乎站点(DOM?)正在注册项目从一个列表移动到另一个列表。如果我将一个项目标记为“完成”,它会向下移动......并在“完整”列表中变为可排序,但我会以序列化格式回显当前位置(因为我将在db)并且应用程序似乎无法识别该项目已移动。

我想强制该应用在项目标记为完成或不完整时重新计算项目列表。

帮助?

2 个答案:

答案 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将执行所有驴工作,因为您只需对正常的链接列表进行排序。