Javascript 不存在属性HTML输入字段
将不存在的属性附加到html元素以便在jquery中使用,这是一种好的做法。比如说Javascript 不存在属性HTML输入字段,javascript,jquery,html,input-field,Javascript,Jquery,Html,Input Field,将不存在的属性附加到html元素以便在jquery中使用,这是一种好的做法。比如说 <input type="text" valrule="someregexstring" /> 然后,只需使用jquery选择包含名为valrule的属性的所有元素,并解析正则表达式字符串 就编程标准和最佳实践而言,这是一个“禁区”吗?使用HTML5数据前缀作为新属性,如下所示: <input type="text" data-valrule="someregexstring" />
<input type="text" valrule="someregexstring" />
然后,只需使用jquery选择包含名为valrule的属性的所有元素,并解析正则表达式字符串
就编程标准和最佳实践而言,这是一个“禁区”吗?使用HTML5数据前缀作为新属性,如下所示:
<input type="text" data-valrule="someregexstring" />
它的有效HTML5
我个人不会这么做。某些浏览器在解析HTML时忽略“不存在”属性,因此这些属性不会保存在浏览器页面DOM中。执行jQuery选择器时,它们可能找不到此属性 如果保证在兼容HTML5的浏览器中运行,则可以使用HTML5
data-
前缀作为属性,例如
<input type="text" data-valrule="someregexstring" />
但是,如果在较旧的浏览器中运行,这可能仍然不起作用。例如,事实证明,我们几乎一半的客户都在使用IE7,没有升级计划(以政府的速度前进)。你绝对可以。尽管HTML5引入了所谓的数据属性,允许以标准方式为元素设置非标准属性 只需在属性名称前面加上
data-
<input type="text" data-valrule="someregexstring" />
虽然这是在HTML5中引入的,但您仍然可以在HTML4文档中使用它
使用jQuery(1.4.3+),可以通过或通过访问数据属性。您应该使用前缀
data-
。HTML5支持它,其他浏览器将忽略它,您可以使用jQuery使用.data()
方法轻松访问它
<input id="myInput" type="text" data-MySuperMassiveAttribute="Awesome"/>
还有还不支持html5的浏览器?他们会忽略这个属性吗?会忽略它。。。关键是这对HTML5是有效的。是的,您可以简单地调用jquery data()函数来获取相应的值<代码>
var baz=$('div')。数据('foo')代码>忽略是什么意思?我从未遇到过“不存在”属性的问题。。。数据-*在HTML中是有效的,我没有声明这一定会发生。我只是指出“不存在”属性的行为不适用于较旧的浏览器。@gdoron-“data-*在HTML@Alohci中是有效的。嗯……在所有现代浏览器中都是有效的(对我来说)。我不关心规范,只要它有效,就像type=”一样javascript
可以删除…@gdoron我特别提到“旧浏览器”。但你说的是“现代浏览器”。按照你的标准,Firefox3.6被认为是“现代”的吗?它不能正确地支持它。
var howAmI = $('#myInput').data('MySuperMassiveAttribute');
alert(howAmI); // now everybody knows how awesome you are ;-)