2012-02-09 99 views
1

所以你有一个列表和另一个列表。一个用于导航,另一个是元数据。维护元素组之间js关系的最佳实践

现在,想法是用户将添加,重新排序和删除导航列表中的项目,并且应该更新元数据列表以反映导航列表中正在发生的事情。通过向导航列表添加一个项目,一大块HTML被添加到元列表中。

请记住我会使用jQuery。

所以,我所质疑的事情是建立元素集之间关系的最好方法。现在我意识到我可以使用索引和:eq()等等,但是在一个有很多容器的复杂实现中,事情会变得毛茸茸......并且回到几个月或几年之后进行维护可能是痛苦的。

只是想知道人们是否有建立清晰关系的建议。将ID存储在隐藏字段中?某种主数组?

回答

2

你在考虑这个问题的方法可能会产生一些意大利面看代码。我强烈建议你看一下MVC框架,比如backbone.js < http://documentcloud.github.com/backbone/> Backbone有一个强大的事件模型,可以让一块UI代码很容易将事件广播到其他UI代码块。

使用骨干,你可以使用模型来跟踪你的物品的状态。然后,您可以使用模块化视图“订阅”在模型上添加/删除/更改事件。

骨干的字面意思就是为了解决您在应用中遇到的问题:“我如何跟踪所有对象的状态?当它们发生变化时,我如何跟踪后续的UI更改?”

希望这有助于

+0

我认为这是我需要的。我刚开始这个项目,并且已经在.parent()。parent()。parent()。海中迷路了。 – 2012-02-09 01:58:33

0

人,我想你可能会让这个更复杂,而不是必要的。如果您有DOM部分跟踪用户看到的内容,并且JS对象在代码中跟踪它,为什么还需要第二个JS对象?

事实上,我会建议尝试完全删除JS对象,并跟踪dom中的所有内容,并且只在需要时才将其转换为JS。除非有令人信服的理由(有时候性能是原因 - 操纵DOM是JS中最大的杀手)。

也许我错过了你的使用情况下的东西...

+0

那么,如果我拖+在导航列表中删除一个项目,我想重新排序在其他列表中反映出来。如果我从导航列表中删除一个项目,我希望它从另一个列表中删除。如果我在元列表中的字段中输入文本,我想更新导航列表中相应项目中的HTML。这种交互需要js,不是吗?我只是想确保列表中的元素的组织方式使得这些关系清晰而简单。 – 2012-02-09 01:27:35

+0

我的建议是让他们随心所欲地拖放,然后当你想知道他们在什么顺序时,去查询dom,然后看看排列顺序 – mtyson 2012-02-09 02:02:03