我正在开发一个基于javascript的应用程序。
使用id来识别元素通常被认为有点不好,因为id是全局的,如果碰巧发生碰撞,它会立即陷入困境。
有哪些有效方法可以避免这种情况?是否可以在通常使用id的地方使用use类,或者有缺点。请注意,我对css方面的兴趣不大,只是javascript。
编辑:我想我得到了答案,但我们很清楚,我不是在讨论文档对象中的重复项。我想构建一组可重用的组件。一般来说,我会通过他们的身份访问它们。
我没有使用DOM生成html,有一个html模板,然后由javacript“丰富”。当我想在同一页面上重用组件时,问题就出现了。命名空间也无济于事;因此即使我的元素在该组件的上下文中是“唯一的”,也不能保证它们在整个文档中。
使用类可能是不好的做法,但还有其他选择吗?
答案 0 :(得分:4)
如果ID是唯一的,则使用ID,如果它被重用,则使用类
使用不是“有点不好”的ID的示例
<div id="header"></div>
<div id="content"></div>
<div id="footer"></div>
可能是,这些只会出现在页面上
使用类的示例
<div class="floatleft"></div>
<div class="bold"></div>
<div class="center"></div>
这些是通用的,可以在多种情况下使用,甚至可以一起使用! <div class="floatleft bold center"></div>
答案 1 :(得分:1)
使用id来识别元素是 经常被认为有点不好,因为 id是全球性的,它会立即发生 如果碰巧有一个,那就搞砸了 碰撞。
我不认为我同意这一点。 id的整个点是(唯一地)id一个元素。是的,如果发生冲突可能会出现问题,这就是为什么您需要小心并确保您的ID是唯一的。像Sencha和Sproutcore这样的JS框架可以帮到你。
使用类代替id是不行的。 css类的要点是能够将一组样式应用于类的所有元素。类应该应用于多个元素。
答案 2 :(得分:1)
您可以使用类,只要您不希望它们是唯一的。如果您确实希望元素是唯一的,那么您不应该担心使用ID。
答案 3 :(得分:1)
在创建Javascript应用程序时,您可以保存指向DOM中已创建元素的指针,而无需通过ID访问它们:
var el = document.createElement('div');
document.body.appendChild(el);
// now you can manipulate el as you want
el.style.backgroundColor = ...;
el.innerHTML = ...;
答案 4 :(得分:0)
我绝对不同意你的陈述(与一般的大多数一揽子陈述一样)。
当你需要唯一识别的东西时,使用Ids是完美的。这就是他们的目的。
如果你有其他元素需要以某种方式进行分组,并且通过它们的结构或标记引用它们将无法工作......那么我将重新使用类。
答案 5 :(得分:0)
有时需要ID,例如,使用<label for="MyID">
代码时。