繁体   English   中英

HTML 标签属性和 jquery 中的驼峰式大小写 - 不起作用,为什么?

[英]Camel case in HTML tag attributes and jquery - doesn't work, why?

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

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

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

请注意,这是驼峰命名法。 现在这段代码不起作用:

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

但是如果我把它变成小写:

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

有用。

当我查看源代码时,它显然是“projectId”(驼峰式),但是当在 chrome -> dev tools -> elements 中时,它是“projectid”(小写)o_O

难怪 jquery 取不到这个值,但 Chrome 为什么要这样做呢? 我以前做过数百次类似的事情,尽管在“项目 ID”中使用了 - 现在经过这么多年制作 web 应用程序我发现了这样的东西 o_O

编辑

HTML 规范规定属性名称不区分大小写,这意味着将它们全部写成大写与全部写成小写或驼峰式一样好:

HTML 元素的属性名称可以用小写和大写字母的任意混合书写,这些字母与本文档 HTML 元素部分中给出的属性名称不区分大小写; 也就是说,属性名称不区分大小写。

编辑#2

规范的另一部分更明确地说明:

HTML 文档中 HTML 元素上的所有属性名称都会自动变为 ASCII 小写,因此对 ASCII 大写字母的限制不会影响此类文档。

原答案

jQuery 指定,如果您想通过驼峰式大小写访问属性,则将它们连字符,以便:

data-project-id="1"通过$(element).data('projectId');

您可以使用“.attr()”来访问属性的值,而不是使用“.data()”,然后您可以通过您给它的名称来引用它; 像下面这样:

$(element).attr('data-projectId');

如果您可以使用普通的 Javascript 并使用 HTML5 这应该有效:

element.getAttributeNS(null, 'data-projectId')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM