我是一个jQuery新手在Trac模板中做一些货物崇拜节目。请原谅这个愚蠢的问题。
Trac 1.0.1(可能还有其他版本)有一个预览功能,它使用jQuery.replaceWith()
将新元素 - 而不仅仅是新值 - 添加到故障单标题中。不幸的是,我有一个Trac插件,它通过设置显示来控制元素的可见性,replaceWith()
创建新元素并且不复制它们的属性。理想情况下,我有一个jQuery函数将内容从一组元素复制到另一组元素,因此我可以更新现有元素。但是将属性复制到新元素的东西也可以。这可能吗?
我们说(我所有的ORIG)是:
<tr id='x'>
<td display='none'>ABCD</td>
</tr>
我从服务器获得的更新(称之为NEW)是:
<tr id='x'>
<td>QRST</td>
</tr>
替换后,我最终得到了包含第二个代码段的页面。我想要的(称之为MERGED)是:
<tr id='x'>
<td display='none'>QRST</td>
</tr>
今天执行此操作的代码是:
$("#ticket").replaceWith(items.filter('#ticket'));
我结束的地方是:
function copyHeaderData(f, t) {
if (f.length != t.length) {
console.log('Shape mismatch');
}
else {
var i;
for (i = 0; i < t.length; ++i) {
t[i].innerHTML = f[i].innerHTML;
}
}
}
// Update ticket box
copyHeaderData(items.filter("#ticket").find("td"), $("#ticket td"));
答案 0 :(得分:0)
我相信你想要使用jQuery的.clone()
方法。来自Documentation:
创建匹配元素集的深层副本。
您可以创建要克隆的元素的变量,例如:
var el = jQuery('.some-element').clone();
然后将其传递给replaceWith:
jQuery('.some-other-element').replaceWith(el);
答案 1 :(得分:0)
尝试
var elem = $(selector-a);
var _elem = $(selector-b);
var clone = elem[0].attributes;
_elem[0].attributes = clone.NamedNodeMap;
参见
convert one element into a like element ala Div -> Span and retain all attributes