我正在用从AJAX调用返回的HTML替换DOM节点。返回的HTML具有id,并且将替换具有该id的DOM节点。
回调函数
function updateTrip(xml, success, jqXHR) {
var para = $(xml);
var id = para.attr('id');
$("#"+id).replaceWith(para);
}
无法替换节点,尽管具有固定ID的相同代码有效,并且等效的原始JavaScript函数也可以使用
function updateTrip(xml, success, jqXHR) {
var para = $(xml).get(0);
var id = para.getAttribute('id');
var div = document.getElementById(id);
div.parentNode.replaceChild(para, div);
}
ids看起来像n-1.12.2.2.4; content-type是text / html; FF错误控制台中未报告任何错误。
答案 0 :(得分:2)
问题在于您的ID中为.
,您需要转义.
以使选择器正常工作。
示例:
$("#n-1\\.12\\.2\\.2\\.4")
话虽如此,最简单的选择是使用document.getElementById()
并简单地使用.replaceWith()
function updateTrip(xml, success, jqXHR) {
var para = $(xml);
var id = para.attr('id');
var a = document.getElementById(id);
$(a).replaceWith(para);
}
<强> Example on jsfiddle 强>
或者如果你想做replace()
选项,它将如下所示:
function updateTrip(xml, success, jqXHR) {
var para = $(xml);
var id = para.attr('id').replace(/\./g, '\\.');
$('#' + id).replaceWith(para);
}
<强> Example on jsfiddle 强>