使用jQuery将一个标记替换为另一个标记,保留所有属性&;数据
我意识到这与类似,但我希望用html中的另一个标记替换标记,但保留对象的属性和任何定义的自定义数据(通过$.data设置)。知道如何实现这一点吗?复制属性应该不会太难,这个答案的重点是保留附加到节点的数据和事件 在编写使用jQuery将一个标记替换为另一个标记,保留所有属性&;数据,jquery,Jquery,我意识到这与类似,但我希望用html中的另一个标记替换标记,但保留对象的属性和任何定义的自定义数据(通过$.data设置)。知道如何实现这一点吗?复制属性应该不会太难,这个答案的重点是保留附加到节点的数据和事件 在编写$('#myid').data('msg','hello world')时,jQuery在内部为DOM元素创建一个特殊属性,名为jQuery.expando(它只是一个以“jQuery”开头,后跟一组数字的字符串)。该属性的值包含jQuery.cache数组的键,自定义数据和事件处
$('#myid').data('msg','hello world')
时,jQuery在内部为DOM元素创建一个特殊属性,名为jQuery.expando
(它只是一个以“jQuery”
开头,后跟一组数字的字符串)。该属性的值包含jQuery.cache
数组的键,自定义数据和事件处理程序存储在该数组中
// lets assume you want to replace node a with node b
// we need the DOM elements for this
var nodea = ..., nodeb = ...;
// jQuery data references are stored in a special property of the node
var key = nodea[jQuery.expando],
cache = jQuery.cache[key];
// perform replacement
$(nodea).replaceWith(nodeb);
if (cache) {
// restore data
jQuery.cache[key] = cache;
nodeb[jQuery.expando] = key;
}
不过,你应该自担风险使用它;弄乱内部结构通常不是最好的解决方案。可能重复您为什么要这样做?具体是哪些标签?为什么不改为编辑HTML源代码?我这样问是因为你想要的似乎是一种糟糕的方法。你的html示例在哪里?@Explosion Pills-另一个问题不是重复的,因为它不包括用
.data()
保存存储的值。frumbert-是否还希望保留事件处理程序?