javascript – HTML标记属性和jquery中的Camel案例 – 不起作用,为什么?

是的,有类似的问题,但它们是关于
jquery添加小写属性,如:
Does the attr() in jQuery force lowercase?

但我有不同的情况.这是我的HTML5代码:

<tr class='projectRow' data-projectId='34'>

请注意,这是camelCase.现在这段代码不起作用:

//"this" points to a child element
$id = $(this).closest('.projectRow').data('projectId');//undefined

但如果我把它改成小写:

$(this).closest('.projectRow').data('projectid');

有用.

当我查看源代码时,它显然是“projectId”(camelCase),但是在chrome中 – >开发工具 – >元素然后它是“projectid”(小写)o_O

难怪jquery无法获得这个价值,但为什么Chrome会这样做呢?我之前做了几百次类似的事情,虽然使用了 – 就像“project-id”一样,现在经过这么多年的网络应用程序后,我发现了类似这样的东西o_O

最佳答案 编辑

HTML spec状态属性名称不区分大小写,这意味着将它们全部写为大写就像将它们全部写成小写或camelCase一样好:

Attribute names for HTML elements may be written with any mix of lowercase and uppercase letters that are a case-insensitive match for
the names of the attributes given in the HTML elements section of this
document; that is, attribute names are case-insensitive.

编辑#2

Another part of the spec更明确地陈述:

All attribute names on HTML elements in HTML documents get
ASCII-lowercased automatically, so the restriction on ASCII uppercase
letters doesn’t affect such documents.

原始答案

jQuery指定如果要通过camelCase访问属性,则将它们连字以便:

data-project-id =“1”通过$(element).data(‘projectId’);

点赞