javascript - 为什么在使用 jQuery replaceWith() 时标记 <constructor> 会导致 'undefined'?

标签 javascript jquery html xml

我正在使用 jQuery 来编辑 XML。是的,我知道这可能是个坏主意。

在使用 xml 标签 <constructor> 时,我遇到了一些非常奇怪的行为(错误?) .用此标记替换现有 XML 会导致标记被“未定义”包围。

$(document).ready(function(){
    var my_xml = $.parseXML("<document><old>original xml</old></document>");
    var new_xml_string = '<constructor>Foobar</constructor>';
    var old_node = $(my_xml).find('old');
    old_node.replaceWith(new_xml_string);
    var my_xml_string = (new XMLSerializer()).serializeToString(my_xml);
    console.log(my_xml_string);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

此代码适用于我尝试的任何其他标签。到目前为止只有<constructor>好像有这个问题。

知道发生了什么事吗?这是因为 jQuery 是用来处理 HTML 而不是 XML 的吗?我可以使用任何解决方法吗?

最佳答案

您的问题显示为将 xml 对象 替换为 xml 字符串。 您应该将 xml object 替换为 xml object

$(document).ready(function(){
    var my_xml = $.parseXML("<document><old>original xml</old></document>");
    var new_xml= $.parseXML("<document><constructor>Foo</constructor></document>");
    var new_xml_const = $(new_xml).find('constructor');
    var old_node = $(my_xml).find('old');
    old_node.replaceWith(new_xml_const);
    var my_xml_string = (new XMLSerializer()).serializeToString(my_xml);
    console.log(my_xml_string);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - 为什么在使用 jQuery replaceWith() 时标记 <constructor> 会导致 'undefined'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46601499/

相关文章:

c# - javascript/jquery 中日期时间的文化转换

javascript - 如何从文本中解析/trim 电子邮件地址

javascript - 对象数组的自定义排序顺序

javascript - 为什么在 vue.js 中这些数据无法正确地从父组件传递到子组件?

javascript - 使用提交按钮进行 jquery 表单验证

javascript - 事件委托(delegate) - 父元素目标而不是子元素

javascript - UTC 与 ISO 时间格式

jquery - 单击按钮打开 Kendo 提示自定义对话框

html - 如何使用最小页面大小添加页眉、视频和页脚?

javascript - .back 和 .pushState - 两个历史的故事