通过一些简短的测试,似乎click()
将触发任何适用的处理程序同步(也就是说,处理程序都会在click()
返回之前被调用),这对于我正在开发什么。但是,jQuery文档似乎并不保证(不提及这种或那种方式)处理程序是同步调用的。
在某处保证同步行为,或者以跨浏览器和面向未来的方式安全地假设?
答案 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");
因此,上面的代码将始终显示两个警报,然后将链接颜色更改为红色。