在我的一个.js文件中,我刚刚注意到我在标题上提到的两个元素之间的奇怪互动。
我首先要提供示例代码,之后我会更详细地解决这个问题。
var xmlClone = xmlCreateDocFromString(this.xmlTemplate);
$(conf.current[currentTab]).find('#' + refID).after($(xmlClone).children());
xmlCreateDocFromString的定义是:
function xmlCreateDocFromString(str)
{
var xmlDoc;
if ( window.DOMParser )
{
var parser = new DOMParser();
xmlDoc = parser.parseFromString(str, "text/xml");
}
else
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(str);
}
return xmlDoc;
}
我正在Chrome上对此进行测试,因此请注意其中的“if”块。
问题是,在第一个代码块的第一行之后,xmlClone确实拥有this.xmlTemplate的内容,但在使用“.after()”JQuery函数(或.before,或.append)xmlClone之后变成并清空xmlDoc,这真的搞砸了我的代码。
所以,我需要的是一种方法来附加xmlClone的内容并同时将它们保存在xmlClone中(也就是通常附加的JS对象)。
如果您需要任何其他信息,请询问,我会尽快回答
答案 0 :(得分:1)
jQuery倾向于移动对象而不是复制它们,因为它通常是人们想要做的事情。
我确信还有其他方法,但您可以在追加...之前克隆该对象。
$(conf.current[currentTab]).find('#' + refID).after($(xmlClone).clone().children());