gpt4 book ai didi

jquery - .html(stuff) 是同步还是异步?

转载 作者:行者123 更新时间:2023-12-03 22:22:37 25 4
gpt4 key购买 nike

假设 stuff 包含大量 html,其中包括一个我想要填充到该元素后面的行中的元素:

$("#content").html(stuff);

下面的行是否可以继续填充 stuff 中定义的元素,或者代码是否可能仍在运行?

如果代码运行完毕,该元素是否仍然可能不存在,因为浏览器尚未渲染它?

我知道当我使用 .load (用于元素的初始下载)时,我必须使用回调,但是 .html() 附带的回调不是这样做的-像平常一样,什么时候完成的事情,这让我感到非常困惑。鉴于 .html 和 .load 之间的相似性,并且知道 .load 是异步的,我的直觉告诉我 .html 也一定是异步的,但我找不到任何迹象。请帮忙。

最佳答案

答案已经在评论中给出,但稍微解释一下:

html 方法不调用回调,它只是一个函数,在给定参数时返回 jQuery 对象(否则返回 html 内容)。

例如,当 stuff 是一个包含大量 html 的非常大的字符串并且它会减慢脚本速度时,脚本的其余部分将等待 html 就位。

所以你问的肯定是可能的:

var stuff = '<div id="new">This is a placeholder text</div>';
$('#content').html(stuff);
$('#new').text('This is the real text');

但是如果stuff是通过ajax使用.load()加载的,则第三行必须在回调中,以便在收到html后立即替换占位符文本来自服务器:

$('#content').load('content.php', function() {
$('#new').text('This is the real text');
});

顺便说一句,这只不过是一个快捷方式:

$.ajax({
url: 'content.php',
success: function(data) {
$('#content').html(data);
$('#new').text('This is the real text');
}
});

关于jquery - .html(stuff) 是同步还是异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25034751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com