提问人:curiousCat 提问时间:7/16/2021 最后编辑:curiousCat 更新时间:7/21/2021 访问量:177
jQuery - 在使用 append() 追加子节点时,在 Internet Explorer 11 中,附加的 xml 标记将转换为小写
jQuery - On appending child node using append()- appended xml tags are converted to lowercase in Internet Explorer 11
问:
问题陈述:
我正在尝试在IE浏览器中使用jQuery使用append()将子节点附加到父XML节点。 在尝试时,我发现 append() 不会向 XML 节点添加任何元素,并且子节点返回为空。
在故障排除时,我发现这是IE的已知问题,我在这里找到了这篇文章 - IE - JQuery在$.each循环中将子节点附加到XML。
使用本文中建议的解决方案后,我现在能够将子节点附加到父节点。但是,子节点的 XML 标记都以小写形式附加,如下所示:
当前结果:
<Content>
<ParentNode>
<childrennode>
<child1>true</child1>
<child2>Hello</child2>
</childrennode>
</ParentNode>
</Content>
预期结果
<Content>
<ParentNode>
<ChildrenNode>
<Child1>true</Child1>
<Child2>Hello</Child2>
</ChildrenNode>
</ParentNode>
</Content>
var contentXML =('<Content><ParentNode></ParentNode></Content>');
var node = $.parseXML(contentXML)
var nodeXML = $(node).find('Content > ParentNode');
var value1 = true;
var value2 = "Hello";
var childNodeinIE = $('<ChildrenNode><Child1>' + value1 + '</Child1>'+ '<Child2>'+ value2 +'</Child2>'+'</ChildrenNode>');
nodeXML.append(childNodeinIE);
console.log($(nodeXML).find("Content > ParentNode > ChildrenNode").text());
console.log($(nodeXML).find("Content > ParentNode > childrennode").text());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>
我知道我也可以使用:
$(contentXML).find("Content > ParentNode > ChildrenNode > Child1").text(value1);
但是,我想附加它,不想覆盖这些值。
有人可以建议如何保留预期结果中所示的XML标签吗?
答:
0赞
curiousCat
7/21/2021
#1
为了在IE中完成这项工作,我不得不使用appendTo()。
例如:
childNodeinIEXML = $($.parseXML(childNodeinIE)).find("ChildrenNode");
childNodeinIEXML.appendTo(nodeXML)
评论
$('<ChildrenNode><Child1>' + value1
.append(childNode)
var childNodeinIE = '<ChildrenNode><Child1>'