【发布时间】:2020-01-16 19:57:51
【问题描述】:
我用replaceWith 批量替换了许多div 中的html。替换后,我使用 jTruncate 截断文本。但是它不起作用,因为在执行时,replaceWith 没有完成。
我尝试了回调技巧 (How do I extend jQuery's replaceWith function to accept a callback function?),但没有奏效。
有什么想法吗?
$(".hotel_info").each(function () {
var div;
div = $(this);
div.replaceWith(data);
truncInfo(div);
});
function truncInfo(div) {
div.jTruncate({
length: 100,
minTrail: 100,
moreText: '[more...]',
lessText: '[less...]',
ellipsisText: '...',
moreAni: 'fast',
lessAni: 'fast'
});
}
【问题讨论】:
-
.replaceWith()是一个“同步”函数,因此其他代码似乎不太可能在尚未完成时运行。 -
也就是说,您似乎没有显示完整的代码;
data来自哪里?是内部执行AJAX调用的函数吗? -
或许this answer可以帮你同步多个异步任务。
-
我相信“数据”来自哪里并不重要。即使是 AJAX 调用,由于 replaceWith 是同步的,它不应该在完成之前执行 truncInfo。
-
嗯,这很重要,因为
.replaceWith()仅在提供同步回调函数时才同步;也就是说,data来自哪里,你没有回答这个问题。
标签: jquery replacewith