是的,有类似的问题,但它们是关于
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’);