【发布时间】:2013-02-20 21:17:15
【问题描述】:
我一直在使用 jQuery 创建 HTML 元素,然后将它们添加到 XML 文档中,如下所示:
var doc = $($.parseXML('<?xml version="1.0" encoding="UTF-8"?><root/>'));
var docRoot = doc.find("root");
var childEl = $("<child>");
docRoot.append(childEl);
var imageEl = $("<image>");
docRoot.append(imageEl);
var xmlString = doc.context.xml ||
new XMLSerializer().serializeToString(doc.context);
$("#xml").text(xmlString);
这是输出(在 Chrome 24 上):
<?xml version="1.0" encoding="UTF-8"?>
<root>
<child xmlns="http://www.w3.org/1999/xhtml"></child>
<img xmlns="http://www.w3.org/1999/xhtml" />
</root>
Here's the JSFiddle link. 不幸的是,我遇到了两个问题。
当我尝试创建一个名称为
child的元素时,它正确地创建了一个标签名称为child的元素。但是,如果我使用名称image,由于某种原因 jQuery 认为我想创建一个img元素。如何阻止 jQuery 这样做?所有子元素都会自动添加属性
xmlns="http://www.w3.org/1999/xhtml",即使我生成的文档不是XHTML 文档。我该如何阻止这种情况发生?
更新:
图像 tagName 问题似乎是 DOM 的问题,而不是 jQuery,正如this code 所展示的那样:
var el = document.createElement("image");
$("#output").append(el.tagName); // Outputs "IMG"
【问题讨论】:
-
你有没有尝试像 var imageEl = $("
"); ? -
@Derek:没有效果。问题似乎出在
createElement而不是 jQuery。 -
都是正确的。
image是 HTML 中img的别名。尝试将所有者文档显式设置为 XML 文档:var imageEl = $("<image />", doc);(我真的不知道这是否有效,不过这是我的猜测)。 -
在 Firefox 中显示
image但 IE 显示img。
标签: javascript jquery xml