进行功能后追加

进行功能后追加

问题描述:

好像被讨论了很多,但无法找到一个简单的答案。在向DOM添加一个加载器图标后,我想确保一个函数被执行,但理解append不支持这一点。有没有简单的解决方案?进行功能后追加

当前代码:

$('#tab').on('shown.bs.tab', function(e) { 
    $("#htmlelement").append('<i class="fa fa-spinner fa-spin fa-fw"></i>'); 
    functionafterappend(); 
}); 
+0

在上面的欺骗,存在使用'就绪()'它调用追加元素的答案,我会给予一个尝试第一 – Huangism

+0

停止使用同步Ajax请求。 –

+0

@黄色这不是.ready()所做的。在这种情况下,它会简单地将请求关闭,以便在下一个tick上运行,这与0间隔setTimeout基本相同。它不会等待任何事情“准备就绪”,它只是将它推到回调队列中,因为DOM已准备就绪。 –

.append是同步功能。因此,此解决方案是有效的,并且只有在执行append后,您才会执行该解决方案。

例如,看看下面的例子中,我触发警报3秒追加完成

$('div') 
 
    .append(`<p>1. Append at ${console.log(new Date())}</p>`) 
 
$('span') 
 
    .append(`<span> 2. Another Append at ${console.log(new Date())}</span>`); 
 
    
 
    // setTimeout(() => alert("Append has been completed"), 3000); 
 
body { 
 
    padding:50px; 
 
} 
 

 
div { 
 
    border:2px solid #bbb; 
 
    background-color:#eee; 
 
    padding:10px; 
 
    margin:10px auto; 
 
} 
 

 
span { 
 
    display:block; 
 
    width:65px; 
 
    font:bold 12px Arial,Sans-Serif; 
 
    color:white; 
 
    padding:5px 10px; 
 
    background-color:black;  
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div>Lorem ipsum dolor sit amet consectetur adipiscing elitr sed diam nonumy tempe goreng.</div>

后,这是做一个append后一些最简单的方法。当然除了,如果你想链的功能,像这样:

.append('<span>1. Append</span>') .prepend('<span>1. Append</span>')

如果你想要去的完全功能,你甚至可以做函数组合,像这样使用Lodash:

const newFunc = pipe(append, prepend); 
+0

好像只为我工作的人。感觉像黑客解决方案,但确定。谢谢! –

+0

没有什么hacky。这是在“append”后面做最简单的方法。当然除了,如果你想链的功能,像这样: '.append( ' 1.追加 ') .prepend(' 1.追加')' 等。 如果你想要去的完全功能,你甚至可以做函数组合,像这样使用Lodash: 常量newFunc =管(追加,前插); 添加此答案以及 – nikjohn

+0

这是哈克,你都在等待3秒,做一些事情,如果我没有什么要等待3秒?如果我想在添加元素准备就绪时执行,该怎么办? – Huangism