Javascript JS在事件发生后做些什么

Javascript JS在事件发生后做些什么,javascript,jquery,Javascript,Jquery,事件侦听器实际上在事件完成之前就开始运行其代码,因此我们能够阻止default()。但是,如果我必须在活动结束后做一些事情,而且不早做这些事情非常重要,那该怎么办 我尝试将只需要在事件完成后才能运行的代码放在侦听器的return语句之后,就像一个自调用函数: $(...).on(event, function(evt){ //do stuff return (function(){ // do stuff after the event })();

事件侦听器实际上在事件完成之前就开始运行其代码,因此我们能够阻止default()。但是,如果我必须在活动结束后做一些事情,而且不早做这些事情非常重要,那该怎么办

我尝试将只需要在事件完成后才能运行的代码放在侦听器的return语句之后,就像一个自调用函数:

$(...).on(event, function(evt){
    //do stuff
    return (function(){
        // do stuff after the event
        })();
});
但那没有帮助。唯一有效的方法是使用
setTimeout
。但这真的不是一个好主意,因为它不是确定性的,在某些条件下,超时时间可能不够,想法失败。
只有在事件已经完成之后,我如何才能执行某些操作?

在浏览器优化之前稍微调用一个事件处理程序,以防止可能的阻塞行为。您可以使用setTimeout使其稍微延迟,例如30毫秒。根据定义调用和处理事件是不确定的。它不知道“完成”一项活动意味着什么。处理程序的操作具有更多上下文。如果是XHR调用,则存在onreadystatechange回调;如果正在加载图像,则使用“onload”事件。如果表单提交是通过AJAX调用完成的,则readyState==4可以检测到表单提交;否则,您可能会在服务器端检测到$\u POST数据并注入一个脚本块。

在进行浏览器优化之前,会稍微调用一个事件处理程序,以防止可能的阻塞行为。您可以使用setTimeout使其稍微延迟,例如30毫秒。根据定义调用和处理事件是不确定的。它不知道“完成”一项活动意味着什么。处理程序的操作具有更多上下文。如果是XHR调用,则存在onreadystatechange回调;如果正在加载图像,则使用“onload”事件。如果表单提交是通过AJAX调用完成的,则readyState==4可以检测到表单提交;否则,您可能会在服务器端检测到$\u POST数据并注入一个脚本块。

什么是事件处理程序中的
//do stuff
?确定“事件已完成后”的方法是什么?是否可以创建stacksnippets,JSFIDLE来演示?@vinayakj“使用$。如上述问题“答案”中所述,如果函数传递给
$。当()
不是jQuery延迟对象时,将立即运行?@vinayakj以及如何将其链接到预定义事件之一?提交表单后喜欢做什么?@TristanTzara“提交表单后喜欢做什么?”是
事件
表单
提交吗?@guest271314无所谓。考虑任何事件。如果您想告诉我在这种情况下必须使用ajax就绪状态,我知道。但情况略有不同,所以我必须使用事件处理程序。事件处理程序中的
//do stuff
是什么?确定“事件已完成后”的方法是什么?是否可以创建stacksnippets,JSFIDLE来演示?@vinayakj“使用$。如上述问题“答案”中所述,如果函数传递给
$。当()
不是jQuery延迟对象时,将立即运行?@vinayakj以及如何将其链接到预定义事件之一?提交表单后喜欢做什么?@TristanTzara“提交表单后喜欢做什么?”是
事件
表单
提交吗?@guest271314无所谓。考虑任何事件。如果您想告诉我在这种情况下必须使用ajax就绪状态,我知道。但情况略有不同,因此我必须使用事件处理程序。