jQuery .attr()似乎区分大小写

我有一个自定义属性的select元素,我用它来动态validation它并显示相应的消息。 属性的名称是骆驼,如下所示

 ... 

问题是在早于1.6的jQuery版本中.attr()似乎区分大小写。 更有问题的是,它不会获取原始的套接字属性。 这在Chrome中的Firefox中也是如此,但在Internet Explorer中按预期工作(不应该不区分大小写)。 任何套管(原始套管除外)都有效,这也很有趣。

这是这个问题的JSFiddle示例 。 您可以在左侧更改jQuery lib版本,然后单击“运行”以检查它与其他版本的工作方式。

我如何缓解这个问题?

如果用等效的javascript getAttribute()替换attr() ,它似乎不区分大小写。

唯一的缺点是你必须首先get() js对象:

sel.get(0).getAttribute("validationMessage")

在这里查看结果

jQuery改变了attr()在1.6中的工作方式。 在此版本之前, attr()主要直接映射到引擎盖下的属性 – 而不是人们可能认为的属性。 由于DOM属性名称通常是单个单词,因此jQuery将大多数字符串转换为小写字母,并为少数属性名称设置了例外,这些属性名称是驼峰式的。 jQuery以这种方式表现的原因是为了处理getAttribute()setAttribute()浏览器不一致和错误。

从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined。 此外,.attr()不应用于普通对象,数组,窗口或文档。 要检索和更改DOM属性,请使用.prop()方法。 资源

在1.6中, attr()映射到引擎盖下的 getAttribute() ,新的prop()方法检索属性值。

在特定情况下,属性和属性之间的差异可能很重要。 在jQuery 1.6之前,.attr()方法有时在检索某些属性时会考虑属性值,这可能会导致行为不一致。 从jQuery 1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()只检索属性。 资源