jQuery 替换问题
我正在用 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 错误控制台中未报告任何错误。
I'm replacing a DOM node with HTML returned from an AJAX call. The returned HTML has an id and the DOM node with that id is to be replaced.
The callback function
function updateTrip(xml, success, jqXHR) {
var para = $(xml);
var id = para.attr('id');
$("#"+id).replaceWith(para);
}
fails to replace the node although the same code with a fixed id works, and the equivalent raw JavaScript function also works
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);
}
The ids look like n-1.12.2.2.4 ; the content-type is text/html; no errors reported in the FF error console.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题出在您的 id 中的
.
上,您需要转义.
才能使选择器正常工作。示例:
$("#n-1\\.12\\.2\\.2\\.4")
话虽这么说,最简单的选择是使用
document .getElementById()
并简单地使用.replaceWith()
示例在jsfiddle
或者如果你想执行
replace()
选项,它看起来像这样:jsfiddle 上的示例
The issue is with the
.
in your id, you need to escape the.
for the selector to work correctly.Example:
$("#n-1\\.12\\.2\\.2\\.4")
With that being said, the easiest option would be to use
document.getElementById()
and simply use.replaceWith()
Example on jsfiddle
or if you want to do the
replace()
option it would look like this:Example on jsfiddle