最近我正在编码,然后遇到一个奇怪的问题。我试图将数据属性分配给我已经创建的新元素(通过jQuery),只是发现它实际上并没有分配该属性。有关示例,请参见下面的链接,下面列出了代码:
http://jsfiddle.net/y95p100c/1/
知道为什么会这样吗?我从来没有偶然发现过...
var div = $("<div />")
$(div).data("foo", "bar")
console.log($(div)[0].outerHTML) // prints <div></div>
data
没有设置 data-*
属性。它管理与data-*
属性无关的数据缓存。如果存在属性,它将根据属性进行初始化data-*
,但不会对其进行写入。要写入属性,请使用attr
。
示例:更新的小提琴
var div = $("<div />")
$(div).attr("data-foo", "bar")
console.log($(div)[0].outerHTML)
您所看到的只是令人惊讶的多种方式之一。另一个是,如果您的标记是,<div id="elm" data-foo="bar"></div>
并且在某个时候您$("#elm").data("foo")
用来获取值(确实是"bar"
),那么您确实会$("#elm").data("foo", "update")
保留该属性,data-foo="bar"
但是data
现在管理的数据foo
等于"update"
。但上面的规则解释它:data
从来没有写入到data-*
ATTRS。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句