首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Camel用HTML标记属性和jquery -不工作,为什么?

Camel用HTML标记属性和jquery -不工作,为什么?
EN

Stack Overflow用户
提问于 2016-03-23 11:07:58
回答 3查看 8.2K关注 0票数 7

是的,也有类似的问题,但它们是关于jquery添加小写属性的,如:jQuery中的attr()是否强制小写?

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

代码语言:javascript
复制
<tr class='projectRow' data-projectId='34'>

注意,这是camelCase。现在,这个代码不起作用了:

代码语言:javascript
复制
//"this" points to a child element
$id = $(this).closest('.projectRow').data('projectId');//undefined

但如果我用小写表示:

代码语言:javascript
复制
$(this).closest('.projectRow').data('projectid');

它起作用了。

当我查看源代码时,它显然是"projectId“(camelCase),但是在chrome -> dev tools ->元素中,则是"projectid”(小写) o_O

难怪jquery不能得到这个值,但是Chrome为什么要这样做呢?以前我做过类似的事情数百次,虽然我在"project-id“中使用了类似的东西,而现在,在制作了这么多年的web应用程序之后,我发现了类似这个o_O的东西。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-23 11:11:31

编辑

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

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

编辑#2

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

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

原始答案

jQuery指定,如果您想通过camelCase访问属性,那么将它们连字符,以便:

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

票数 3
EN

Stack Overflow用户

发布于 2016-03-23 11:17:47

您可以使用".data()“来访问属性值,而不是使用".attr()”,然后可以使用给定的名称引用它;如下所示:

代码语言:javascript
复制
$(element).attr('data-projectId');
票数 0
EN

Stack Overflow用户

发布于 2022-02-08 18:20:34

如果您可以使用普通Javascript并使用HTML5,那么这应该是可行的:

代码语言:javascript
复制
element.getAttributeNS(null, 'data-projectId')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36176474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档