Ajax替换而不是追加

75
我使用了以下 jQuery 示例(点击查看),它非常好用。然而,它是在原结果的基础上添加新结果的。如果我想替换而不是添加新的结果,需要做出哪些改变?
4个回答

156

在追加内容之前,您可以先清空元素。

$("#results").empty().append(myHtml);

或者使用html方法

$("#results").html(myHtml)

应该注意到,append 支持元素和元素数组,而 html 不支持。 - vallentin

27

只需更改

$('#results').append(myHtml);

to

$('#results').html(myHtml);

5

好的,最后一次更新是2009年,但如果问题仍然存在:

let oldElement = $('#results')
let content = '<div id="#results>9000+</div>'
oldElement = oldElement.replaceWith(content)
let newElement = $('#results')

2
虽然有用,但它并不做相同的事情,它替换元素而不是插入内容。 - Joseph Garrone
是的,替换其内容的更好方法是使用HTML方法。 - user8086037
问题没有说明需要哪种类型的替换。.text().html()用于获取和设置元素的内部内容。.replaceWith()替换元素本身。.empty().append()一起是一种复杂的方式来执行.html(),但如果语句之间有一些分离可能会很有用。比如,如果新内容总是被附加,但只有在首先清空元素时才会出现。.appendTo().replaceAll()反转内容和元素(例如$('<div/>').appendTo('body'))。我认为replaceWith()与通过ID进行的服务器通信的部分配对得很好。 - Kevin

0

在执行 append 或 prepend 函数之前,先确保函数不为空。

我尝试了这个方法,它有效 --->

frame 是 id 选择器,它会将图片附加到其中。

$("#frame").empty().append('<img src="" >' ); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接