2016-08-15 72 views
0

此JS尝试将html元素保存到myHTML。但稍后当该元素改变时,该变量也会改变。
如何保存myHTML的副本以备后用?将html元素保存到变量

let myHTML = ''; 
$('td.label').each(function() { 
    if (this.textContent === "sign:") { 
    if (!myHTML) myHTML = this.parentElement; 
    return false; 
    } 
}); 

//later the elemnt gets changed 
$('td.label').each(function() { 
    if (this.textContent === "sign:") { 
    this.parentElement.appendChild(some-html-element) 
    return false; 
    } 
}); 

console.log(myHTML); //it includes the some-html-element 
+2

http://stackoverflow.com/questions/921290/is-it-possible-to-clone-html-element-objects-in-javascript-jquery –

+0

并非总是如此,@NJDawson https://开头jsfiddle.net/z481LL1z/1/ – eisbehr

+0

你需要整个html对象吗?如果没有,那么你可以使用html字符串。 myHTML = this.parentElement.html() – Indra

回答

0

使用the cloneNode() method设置myHTML到元素的副本

myHTML = this.parentElement.cloneNode();

+0

它不会克隆不是我想要的树的其余部分。我想克隆整棵树 –

0

我想是因为它是一个对象,JS会引用它,并在改变甚至你myHTML对象也改变。下面的这种方法应该是正确的,因为它不直接使用DOM对象。

var myHTML; 

$('td.label').each(function() { 
    if($(this).text() === "sign:") { 
     if(!myHTML) { 
      myHTML = $(this).parent(); 
     } 

     return false; 
    } 
}); 

$('td.label').each(function() { 
    if($(this).text() === "sign:") { 
     $(this).parent().append("some-html-element"); 
     return false; 
    } 
}); 

console.log(myHTML);