通过一些简短的测试,似乎click()
将同步触发任何适用的处理程序(也就是说,在click()
返回之前调用所有处理程序),这对于我正在开发的内容是理想的。然而,jQuery文档似乎并没有保证(没有提到这种或那种方式)处理程序是同步调用的。
同步行为是否在某个地方得到保证,或者假设跨浏览器和未来是安全的?
是的,在后台,所有的点击事件将在正常的默认功能启动之前同步运行。查看此操作的一种方法是向锚标记添加一个或多个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");
因此,上面的代码将始终显示两个警告,然后将链接颜色更改为红色