Javascript 使用DOM中定义的html5数据属性创建新元素

Javascript 使用DOM中定义的html5数据属性创建新元素,javascript,jquery,html,Javascript,Jquery,Html,我想创建一个定义了html5数据属性的新元素,但是它们不会显示在DOM中(与使用say.addClass时不同)。这是故意的行为吗 这将创建一个没有数据foo属性的元素: -> $("<div>foo</div>").data('foo', 'bar').addClass('class') => <div class="class">foo</div> ->$(“foo”).data('foo','bar').addClass('cl

我想创建一个定义了html5数据属性的新元素,但是它们不会显示在DOM中(与使用say.addClass时不同)。这是故意的行为吗

这将创建一个没有
数据foo
属性的元素:

-> $("<div>foo</div>").data('foo', 'bar').addClass('class')
=> <div class="class">foo</div>
->$(“foo”).data('foo','bar').addClass('class'))
=>foo
我必须在构造函数中声明它

-> $("<div data-foo='bar'>foo</div>").addClass('class')
=> <div class="class" data-foo="bar">foo</div>
->$(“foo”).addClass('class'))
=>foo
.data方法的工作原理不应该相同吗?

从这里开始:

4
。没有jQuery数据API会更改HTML5数据-*属性

.data()和.removeData()的大多数用法仍然适用于原始版本 将数据与内存中的DOM元素关联的目的。更新DOM 每次更改数据时的属性都会降低速度 很好的理由。此外,甚至不可能序列化所有数据类型 可能附加到DOM元素的,例如函数、引用 到其他DOM元素或自定义JavaScript对象

规则:要更新或删除HTML5数据-*属性,请使用jQuery的 .attr()或.removeAttr()方法


因此,使用通常的
attr
..

iirc,
.data
不设置或修改数据属性,它只是读取它们。非常确定这也不仅仅是jQuery的事情。如果执行
element.data=[something]
操作,它将在内存中关联该数据,但不会将其作为内联属性反映在DOM中。您必须使用
element.setAttribute()
[而不是jQ的.attr()]。