0

私の .js ファイルの 1 つで、タイトルに記載されている 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 オブジェクトに対して追加を行う方法です)。

追加情報が必要な場合はお問い合わせください。できるだけ早く回答します

4

1 に答える 1

1

jQuery は、オブジェクトをコピーするのではなく、移動する傾向があります。これは、一般的に、オブジェクトをコピーすることが人々が求めていることだからです。

他の方法があると確信していますが、追加する前にオブジェクトを複製できます...

$(conf.current[currentTab]).find('#' + refID).after($(xmlClone).clone().children());
于 2013-04-25T13:03:04.170 に答える