【问题标题】:Interaction between XMLDocument and JQuery .append()XMLDocument 和 JQuery .append() 之间的交互
【发布时间】:2013-04-25 13:00:22
【问题描述】:

在我的一个 .js 文件中,我刚刚注意到标题中提到的 2 个元素之间的奇怪交互。

我将首先提供示例代码,然后我将更详细地解决这个问题。

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 对象执行的附加操作)。

如果您需要任何其他信息,请询问,我会尽快回复

【问题讨论】:

    标签: jquery xml-parsing


    【解决方案1】:

    jQuery 倾向于移动对象而不是复制它们,因为这通常是人们想要做的。

    我相信还有其他方法,但您可以在追加之前克隆对象...

    $(conf.current[currentTab]).find('#' + refID).after($(xmlClone).clone().children());
    

    【讨论】:

    • 这真的很奇怪,因为 append 不会“清空” JS 对象,所以我实际上希望元素被复制而不是被移动。克隆方法确实有效,但我稍微调整了我的程序,所以对这个问题的修复变成了更有趣的事情。无论如何谢谢:)
    猜你喜欢
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2014-12-07
    • 2012-09-06
    • 2016-11-11
    • 2016-05-15
    相关资源
    最近更新 更多