0

我正在用从 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);   

}

id 看起来像 n-1.12.2.2.4 ;内容类型为 text/html;FF 错误控制台中没有报告错误。

4

1 回答 1

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);  
}

jsfiddle 上的示例

或者如果你想做这个replace()选项,它看起来像这样:

function updateTrip(xml, success, jqXHR) {
    var para = $(xml);
    var id = para.attr('id').replace(/\./g, '\\.');
    $('#' + id).replaceWith(para);
}

jsfiddle 上的示例

于 2011-05-11T22:51:36.150 回答