一点背景
我在 javascript/jQuery 中编写了一个方法,该方法循环遍历字段并根据它们是什么来设置它们,即下拉列表、自动完成、文本等...
这样做的原因是我专门设置了输入和文本区域的样式,并且一旦页面加载,它们必须在 javascript 中初始化。此类中的方法循环遍历页面上的每个字段并根据其内容设置事件。
目前我通过给字段容器一个类来检测每个字段是什么,jQuery 读取这个类并相应地设置字段,如下所示:
<div id="company-container" class="autocomplete autocomplete-215 form-sprite">
<input type="text" class="field" name="company" id="company" autocomplete="off" maxlength="80" tabindex="1" />
<div class="label overflow" id="company-label">Company</div>
<div class="glow form-sprite" id="company-glow"></div>
<ul class="subNav"></ul>
</div>
jQuery 看起来像这样:
$(options.fields).each(function(){
// Set the field events
SineMacula.setBlur($(this));
SineMacula.setFocus($(this));
SineMacula.toggleLabel($(this));
// If the field is a drop down then set it
if($(this).parent().hasClass('dropdown')){
SineMacula.setDropdown($(this).parent());
}
// If the field is a checkbox then set it
if($(this).parent().hasClass('checkbox')){
SineMacula.setCheckbox($(this).parent());
}
// and so on ...
});
上面的大部分代码都可以忽略,但它应该让你知道我在做什么......
问题
我最近注意到 HTML5 属性data-*
,*
可以是任何东西。我的问题是:
- 我应该使用 HTML5
data-*
属性而不是类吗? - 有比
data-*
属性或类更好的方法吗? - 属性虽然
data-*
是HTML5,但只要DOCTYPE
定义正确,是否兼容早期的浏览器?