有没有办法防止默认事件,然后用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;