来由
在一些插件中经常看到, 在class属性中出现一些跟样式无关的属性值, 这些值在css样式中没有对应定义, 但是在js中会根据这个值来给dom对象添加特殊的行为, 例如:
jquery validate:
from http://www.cnblogs.com/hejunrex/archive/2011/11/17/2252193.html
jquery easy ui
为什么要在class中添加非样式内容?
原因
1、 借用class的含义, 类的含义, 标明此dom对象 是属于某一类事物, 事实上html标准上确实有此说法。
http://www.w3.org/TR/1999/REC-html401-19991224/struct/global.html#h-7.5.2
2、 class 索引速度比较快。
关于class索引速度实验
关于使用class索引, 与其对应的可以使用attribute索引, 可以进行这两类方法的对比。
使用 firefox 测试, jquery语法, selector 包括下面四种形式:
.selector
[selector=’selector’]
[class*=’selector’]
[selecotr*=’selector’]
code: 生成500个li对象,填充到#test中, 对于四种方式分别执行1000此索引。
结果:
发现, .selector 方式最快, 对应结果最后一个 46ms
其次是, [selector=’selector’], 对应结果是 92ms
然后是, [selector*=’selector’], 对应结果是 135ms
最后是, [class*=’selector’], 对应结果是 153ms
所以我们看到 .selector 是很有优势的, 所以各种插件有在class中写非样式标签的写法。
同时,我们也要修正对class的认识, 其并不是仅仅是只能容纳 stylesheet中,定义好的样式标签名。
补充实验: [component1] 耗时76秒。 也没有.selector快。