jQuery是否在内部将HTML5数据属性键转换为小写?

axi*_*m82 20 javascript jquery html5

我试图尽可能地将我的JavaScript编码风格与我的Zend编码风格相符合,这是使用camelCase.因此,在我的HTML5数据属性中,我将其命名为以下示例:

<button class="action" data-actionClass="user" data-actionMethod="delete" data-actionRequest="/user/delete/user-id/1" data-actionComplete="{reload:users}">Delete User #1</button>
<div id="users" data-reloadRequest="/user/index"> ... </div>
Run Code Online (Sandbox Code Playgroud)

将Jquery用于操作的非常不引人注目的方式,但是当我调用$('.action').data()时,属性名称将转换为小写.

有没有解决方法呢?

我从不认为JavaScript变量应该包含破折号,我无法理解为什么jQuery在内部为我做这个?或许它是HTML5?

Fel*_*ing 39

如果你使用

data-action-method="delete"
Run Code Online (Sandbox Code Playgroud)

然后你可以访问该属性

$('.action').data('actionMethod')
Run Code Online (Sandbox Code Playgroud)

这是HTML5 DOM API的一部分:

自定义数据属性将转换为DOMStringMap条目的键,并具有以下规则:

  • 删除任何破折号(U + 002D);
  • 短划线(U + 002D)之后的任何字母,在删除之前,都以其大写对应方式设置.

  • 这太令人困惑了!改变案例是出乎意料的行为(对我来说). (17认同)
  • 谢谢你的回答,我只是用这个把头撞在墙上.但是我不禁想知道为什么有人会在规范中包含一些如此荒谬的东西.就好像他们在拖着我们一样. (5认同)

小智 6

首先,请参阅JQuery 源代码的这一部分,它假定您具有小写属性。

其次,按照惯例,所有 HTML5 属性都应该是小写的,参见:http : //www.htmlbasictutor.ca/html-tag-attributes.htm

最后,请注意,如果您坚持使用大写,可能会遇到更多问题,请参阅Django:无法在 HTML 输入元素中添加大写属性名称