是否可以确保在将用户转发到外部URL之前执行jQuery on click事件?我现在谷歌搜索了2个小时,并在stackoverflow上阅读了几个帖子。我不能让这个工作。
这是我尝试过的:
HTML:
<a href="http://www.example.com/" class="external-url">Click me</a>
JS:
$('.external-url').on("click", function (e) {
e.preventDefault();
if (myCustomEvent()) {
window.location = this.href;
}
});
function myCustomEvent()
{
setTimeout(function() {
console.log('Execute some custom JS here before a href firing...');
return true;
}, 3000);
}
但它似乎就是&#34; if(myCustomEvent()){&#34;在myCustomEvent函数能够返回true之前被执行。有一个更好的方法吗?还有一种实际有用的方法吗?
答案 0 :(得分:3)
jQuery点击事件在位置发生变化之前运行 - 但您在点击处理程序中间执行了异步操作。最简单的方法是将您想要发生的事情传递到myCustomEvent
,粗略地说:
$('external-url').on("click", function (e) {
var url = this.href;
e.preventDefault();
myCustomEvent(function() {
window.location = url;
});
});
function myCustomEvent(fn) {
setTimeout(function() {
console.log('Execute some custom JS here before a href firing...');
fn();
}, 3000);
}
根据您的实际要求,还有其他方法可以解决这个问题。