首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确保单击时的jQuery在href触发之前运行

确保单击时的jQuery在href触发之前运行
EN

Stack Overflow用户
提问于 2015-10-05 20:54:17
回答 1查看 1.6K关注 0票数 2

是否可以确保在用户被转发到外部URL之前执行单击事件上的jQuery?我已经在谷歌上搜索了2个小时,并在这里阅读了几篇关于堆栈溢出的文章。我就是不能让这件事起作用。

这就是我尝试过的:

HTML:

代码语言:javascript
复制
<a href="http://www.example.com/" class="external-url">Click me</a>

联署材料:

代码语言:javascript
复制
$('.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);
}

但是,在myCustomEvent函数能够返回true之前,行"if (myCustomEvent()) {“似乎被删除了。有更好的方法吗?还有一种实际可行的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-05 21:03:56

jQuery单击事件确实在位置更改之前运行--但是您正在单击处理程序的中间执行一些异步操作。

最简单的方法是将您想要发生的事情传递到myCustomEvent中,大致如下:

代码语言:javascript
复制
$('.external-url').on('click', function (e) {
  const url = this.href
  
  e.preventDefault()
  
  myCustomEvent(function() {
    window.location = url
  });
});

function myCustomEvent(fn) {
  setTimeout(function() {
    console.log('Execute custom JS before firing navigation...');
    fn();
  }, 3000);
}

根据您的实际需求,还有其他处理此问题的方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32957712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档