2012-02-22 79 views
3

我想要一些关于dom操作的回报。我认为我们可以通过几种方式来保存元素的状态。例如,你想让一个元素“插入”,我必须使用什么? :用javascript/jQuery操作dom元素属性的最佳方法

  • 添加CSS类为“插入”
  • 保存用。数据的属性(“插入”,真)
  • 推我的元素在含有所有全局数组“插入”元件
  • 。 ..

但是最好的方法是什么?也许解决方案是使用所有可能性。我不知道。

这是一个普遍的问题。我没有特定的问题,但我正在开发一个巨大的JavaScript应用程序,我想选择我的规则:)

+0

我很好奇,看看有经验的人在这些技术的话。好问题! – 2012-02-22 14:28:53

+0

这真的取决于“选择”的含义。如果仅仅是为了程序上的目的,因为Javascript对象只是关联数组,所以可以将“selected”添加为DOMElement的新成员:'someDOMElement.selected = true;' – crush 2012-02-22 14:29:54

+0

我认为这取决于您打算如何处理知识 - 但我很好奇,更有经验的人不得不说。 – 2012-02-22 14:31:02

回答

2

你想要选定的元素以特定的方式?
- >使用css-class

你想检查是否在代码的不同位置选择了特定的元素吗?
- >使用.data

你想对所有选定的元素做些什么吗?
- >使用数组。

如果您打算做以上几件事情,您也可以结合使用这些方法。

2

如果你想要一个视觉元素来陪伴状态,那么CSS类是最明显的选择。数据元素也是标记某些东西的完美有效方式。

如果你想保持状态,那么在JSON结构中保存元素状态可能是一个不错的选择。 JSON数据是“主模型”,并且基于其模型呈现元素。 JSON数据可以轻松传递到服务器或下一页。

+0

是的,很好的解决方案,我忘了JSON在JavaScript :) – Sebastien 2012-02-22 14:36:33

0

这是一个很难回答的问题,因为它确实取决于您的应用程序的需求。您在任何特定时间需要评估多少个元素?一打?几千?当你选择这些元素时,你还需要做些什么?基本准则是:

  1. 不要添加selected类,除非你真的需要改变元素的样式。

  2. 如果您需要根据是否已选择元素来遍历元素,请不要使用data()选项。

  3. 如果您不需要它们来保存多个简单的调用,请不要将选定的元素缓存在内存中(变量或localStorage或其他)。如果您有明显的性能增益或需要保留数据,管理选定元素数组的开销只是值得的。

那么,你真的需要对这些元素做什么?随着有关您的情况的更多信息,我们可以提出更好的建议。

+0

我没有一个具体的情况下,我只是尝试找到一个良好的JavaScript代码的最佳途径。我正在开发浏览器视频游戏,我将需要很多js :) – Sebastien 2012-02-22 14:40:15

0

对我来说,这取决于使用的状态会是怎样......

  • 如果布局的变化取决于选择的,我使用的是类
  • JS逻辑(超过只造型) - >属性

我几乎不用类就可以将js逻辑添加到元素...... css往往比底层的javascript文件更经常变化。如果我在JS使用类,我强迫自己保持的类名,并选择在CSS或者只是重做两个js和css的所有元素选择当需要更改(例如,因为使用另一个库或CSS模板)

至于你的第三个选择,属性可以给你的所有选择alemens期运用jQuery选择$阵列(“* [选择]”)

0

如果事情变得复杂,我把增强DOM元素融入到“类”

var InserttMe = function(element){ 
    this.element = element; 
    this.inserted= false; 
}; 
selectMe.prototype = { 
    insert: function(){ 
     this.inserted= true; 
     //do whatever you do with your element 
    } 
} 
相关问题