0

DOM ノードを、AJAX 呼び出しから返された HTML に置き換えています。返された 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 のようになります。content-type は 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 に答える