关于id vs类的Stack Overflow有很多问题,但是这些问题几乎总是与CSS有关 – 普遍接受的答案是使用类来构造特定的元素集,并为特定实例创建ids.有道理,公平.
然而,我发现,随着我越来越多的Javascript / jQuery / ajax,这种方法开始变得不那么清晰,我发现语义元素应该被赋予id的情况,但是因为可能有多个实例我’ m应该使用类.
这是我的意思的一个例子:
看看Stack Overflow的markdown问题编辑器的工具栏 – 每个按钮都有一个ID来唯一标识它.完美的意义 – 它是执行一个特定功能的一个按钮,并且可能基于该id挂起了脚本.
现在想象一下,我正在构建一个丰富的网络应用程序,并且有一个页面有两个选项卡,每个都有一个markdown编辑器.这是否意味着工具栏按钮现在应该使用类来识别它们?
这只是似乎错了.
另一个例子:我正在一个照片库网站上,每个照片上都有一个小工具栏.公约说,因为这些按钮有多个实例,我应该使用类.真?
所以我的问题是….
>如果我在一个页面上犯了重复的ID,哪些浏览器实际上会破坏?
>对于这样做的浏览器来说,它只是将会中断的CSS样式,或者jQuery选择器也会中断.
>在所描述的情况下使用重复的ids是真的很糟糕.
解决方法
类的意思是…(无限期)ID的意思是…(definitive)
“这个div是一个照片工具栏,可以有更多的喜欢.”有意义,我会用一个课.
我不一定需要ID工具栏按钮,除非我确定页面上只能有一个该工具栏的实例.在StackOverflow的markdown编辑器的情况下,我也认为这些应该是更灵活的类(整个编辑器可以包装在一个唯一的ID,如#answer-editor或#comment-editor).
浏览器在他们接受的方面是相当灵活的,但这并不意味着标准应该被打破.