javascript - 使用 JavaScript 确定事件何时停止

标签 javascript jquery jquery-events

简化场景:

  • 我在按钮上有一个点击事件
  • 在事件中我调用了一个函数 X
  • 函数 X 返回一个值
  • 点击事件使用接收到的数据更改 DOM(实际上呈现一个 jQuery 模板)

示例代码:

$("button").click(function()
{
    var response = FunctionX();

    doTemplateRendering(response); //(*)
});

function FunctionX()
{
    //some code

    return some_value;

    //The click event has finished, so now make a little adjust to the generated dom (*)
}

问题是:

  • 我是否有办法确定点击何时从 FunctionX() 停止?
  • 或者有没有一种方法可以让 doTemplateRendering() 触发一些我可以从 FunctionX() 中捕获的东西,所以我是否返回一个值并不重要,因为在某些时候我将能够执行我需要的额外代码

这背后的原因是这是框架的一部分,我无法更改点击事件。

最佳答案

您不能从函数返回一个值,然后在同一个函数中进行进一步处理。但是您可以使用 setTimeout() 安排一些代码稍后运行:

function FunctionX()
{
    //some code    

    setTimeout(function() {
        //The click event has finished, so now make a little adjust to the generated dom (*)
    }, 5);

    return some_value;
}

JS 是单线程的(如果我们忽略 web-workers),所以你传递给 timeout 的函数在点击事件完成后才会执行。

或者,您可以将第二个点击处理程序绑定(bind)到同一个按钮并在那里进行额外的处理 - jQuery 保证事件处理程序(对于相同的事件和元素)将按照它们绑定(bind)的顺序运行。

关于javascript - 使用 JavaScript 确定事件何时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16083726/

相关文章:

php - Facebox 取消事件

javascript - 斐波那契数列 "Show the mathematical sequence"

javascript - 将文本拖入文本框时跨浏览器触发 javascript 事件

javascript - 通过函数使用 Splice() 方法推送数字

JavaScript 上传重复项

javascript - Twitter Bootstrap 模式淡入并在手动切换半秒后消失

html - 如何用 JQuery 删除 "onclick"?

javascript - 什么是窗口重绘的 jQuery 事件?

javascript - 根据对象内的值获取对象键

javascript - 用React搜索YouTube