通过一些简短的测试,看起来click()
将同步触发任何适用的处理程序(也就是说,在click()
返回之前都会调用处理程序),这对于我正在开发的内容来说是可取的。然而,jQuery文档似乎并不保证(没有提到任何一种方式)处理程序被同步调用。
是一种同步行为,在某些地方得到保证,或者作为跨浏览器和未来的安全保证?。
发布于 2011-07-08 05:27:02
是的,在幕后,所有单击事件都将在正常的默认功能启动之前同步运行。查看此操作的一种方法是将一个或多个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");
因此,上面的代码将始终显示这两个警报,然后将链接颜色更改为红色。
https://stackoverflow.com/questions/6620010
复制相似问题