有没有办法防止默认事件,然后用jQuery再次激活它?

基本上我有一个锚元素, link

点击后,我首先想要做一些事情,只有在完成后我才想把用户带到它链接到的页面。 就像是:

 $('a').click(function(ev){ ev.preventDefault(); //do something here ev.refireDefault(); }); 

有什么建议?

更新

我很抱歉! 我的FireFox决定缓存以前版本的JS,所以我尝试过的只是一个简单的CTRL + F5解决了这个问题。

Javascript不是multithreading的。 它是事件驱动的,事件按照加载它们的顺序触发。 因此,如果您只是完全忽略了click事件中的ev.preventDefault() ,则在函数退出之前它不会触发默认操作。

请参见jsFiddle


编辑@Greg的评论:

上述情况不正确的唯一情况是异步函数。 在那种情况下,您希望首先阻止默认操作,然后在异步回调函数中,重新触发默认操作。

preventDefault将事件标记为已处理,以便在单击函数退出时,不执行默认操作。 如果不调用preventDefault,则在单击函数退出之前不会调用默认单击操作。 所以删除它,它会像你建议的那样工作。

工作完成后,链接将不会发生,因此您可以执行以下操作:

 $('a').click(function(ev){ //do something here }); 

执行所需操作后,为什么不通过添加以下行将其重定向到页面:

 window.location = 'welcome.php'; 

它可以这样做:

 link 

1) onclick需要在href 之前

2) 返回true; 确保在执行JS代码后将用户带到链接页面。 如果你使用return false; – 链接本身不起作用,它只会点击你的JavaScript;