【问题标题】:Trouble clicking dynamic a tag on timeout在超时时点击动态标签时遇到问题
【发布时间】:2013-08-26 23:50:40
【问题描述】:

我有以下问题,看起来很简单,但我不知道哪里出了问题。

我想做的是:

当我单击一个链接(例如:mysite.com/blog/blog-article.html)时,该链接的 href 会保存到一个变量中。在 javascript 中,它被阻止并定向到不同的 url(主要类别 - mysite.com/blog)。所有页面都是动态加载的。

在这个 mysite.com/blog 中有一个没有 href 的 a 元素。我会将被阻止的 url(保存在变量中)提供给 a 元素。

$('#go-to-next').attr('href',goToUrl);

这工作正常,但在超时后我希望它被点击。

setTimeout(function(){
        $('#go-to-next').click();
    },500);

但这不起作用。任何人都知道问题可能是什么?当我将超时脚本放在萤火虫中时,它可以工作。所以它必须与 .on() 做一些事情,但我可以毫无问题地更改 href。

【问题讨论】:

  • 调用 .click() 只是运行绑定到事件的处理程序,它实际上并不模拟点击链接,因此它不会运行默认操作。
  • @Barmar 不知道。但是为什么我在Firebug中粘贴代码时会触发它?有什么方法可以模拟点击动态生成的链接?
  • 我不知道为什么它在 Firebug 中有效。我在 Chrome 开发人员工具中尝试过,但没有成功。在这方面,静态链接和动态链接没有区别。
  • 我下面的回答不能解决问题吗?

标签: javascript ajax history.js html5-history


【解决方案1】:

试试:

setTimeout(function(){
        window.location.href = $('#go-to-next').attr('href');
    },500);

在锚点上调用 .click() 不会运行跟随链接的默认操作,因此如果需要,您必须明确编码。

【讨论】:

  • 谢谢,但不幸的是这行不通。我有多种不同类的#go-to-next 链接。读取这些类,然后决定如何显示新的 url。我需要在#go-to-next 上模拟点击事件。
  • 如果链接具有使用$("#go-to-next").click(function()...) 创建的事件绑定,则调用.click() 应该执行这些绑定。它唯一不做的就是运行链接后的默认处理程序。
猜你喜欢
  • 2020-10-25
  • 1970-01-01
  • 1970-01-01
  • 2014-05-18
  • 2020-05-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2014-12-15
相关资源
最近更新 更多