Jquery clone()不会克隆带有data()的新值集

时间:2013-12-17 11:27:44

标签: javascript jquery html

使用jquery data()设置元素的数据属性,如下所示:

HTML:

<div id="some-el" data-number="0"></div>

JQ:

$("#some-el").data("number",1);

众所周知,数据在内部发生变化。因此在内部检查器中你实际上看不到新值是1.但是除此之外,如果我使用新数据值克隆元素,jquery克隆原始dom元素而没有当前数据值!!!

$("#some-el").clone();

<div id="some-el" data-number="0"></div>内部和明显的结果!

我以为我可以通过简单地使用attr("data-number",1);

来避免这个问题

无论如何,我想问你这是否是dat()的正确行为?我所期待的是什么?为什么?

2 个答案:

答案 0 :(得分:5)

我认为克隆可以接受一个布尔来指示包含数据和事件的克隆,因此Clone(true)应该有效:http://api.jquery.com/clone/

这是一个有效的小提琴:http://jsfiddle.net/2pdNL/

答案 1 :(得分:4)

.data()未在DOM中设置值。

  

数据属性第一次时会提取data-属性   访问,然后不再访问或变异(所有数据值   然后在内部存储在jQuery中)

但这是一种解决方法,而不是使用

$("#some-el").data("number",1);  

直接与DOM交互

$("#some-el").attr("data-number",1);

JSFiddle

同时检查此answer