JQuery replaceWith问题

时间:2011-05-11 22:08:37

标签: jquery replacewith

我正在用从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错误控制台中未报告任何错误。

1 个答案:

答案 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