jQuery .on(“click”)是否始终在<a> href fires?</a>之前运行

时间:2013-04-25 16:15:15

标签: jquery

$("a").on("click", function (e) {
    doSomething();
});
...
<a href="http://website.com">My Link</a>

doSomething()总是会在每个浏览器中的“href”之前运行吗?

3 个答案:

答案 0 :(得分:21)

是的,您的处理程序将始终首先运行。例如,这就是允许您取消默认行为(导航到href url)的必要条件

$("a").on("click", function (e) {
   e.preventDefault(); // --> if this handle didn't run first, this wouldn't work
   doSomething();
});

答案 1 :(得分:3)

是的。如果您不想激活href,可以致电e.preventDefault();,浏览器不会关注该链接。

答案 2 :(得分:1)

是的,但是只有在第一个await之前运行的部分:

$("a").on("click", async function(e) {
  example(); // this will always run

  await Promise.resolve();

  example3(); // this may not run, as it is after the first `await`, and it is after nagivation
  e.preventDefault(); // this does not work, as it is after the first `await`
});