在jQuery click()期间是否始终同步调用处理程序?

时间:2011-07-08 04:33:03

标签: jquery event-handling synchronous

通过一些简短的测试,似乎click()将触发任何适用的处理程序同步(也就是说,处理程序都会在click()返回之前被调用),这对于我正在开发什么。但是,jQuery文档似乎并不保证(不提及这种或那种方式)处理程序是同步调用的。

在某处保证同步行为,或者以跨浏览器和面向未来的方式安全地假设?

1 个答案:

答案 0 :(得分:4)

是的,在幕后,所有点击事件将在正常默认功能启动之前同步运行。查看此操作的一种方法是将一个或多个click事件添加到锚标记。如果任何附加函数返回false。它将取消锚标记的默认功能。换句话说,您不会转到href属性中的页面。

$("a:first")
    .click(function() { alert("I was attached first!"); return false; })
    .click(function() { alert("Running despite the earlier 'return false'!");});

你会注意到它们以同样的顺序同步运行!任何附加的函数都可以返回false以取消锚标记发生的正常重定向。

当使用jQuery触发click事件时,所有附加函数将在执行其余链接操作之前运行。

$("a:first")
    .click(function() { alert("I was attached first!"); return false; })
    .click(function() { alert("Running despite the earlier 'return false'!");});
$("a:first").click().css("color", "red");

因此,上面的代码将始终显示两个警报,然后将链接颜色更改为红色。