【问题标题】:How to trigger the default action/event of a HTML link (anchor element)?如何触发 HTML 链接(锚元素)的默认操作/事件?
【发布时间】:2014-06-18 08:01:19
【问题描述】:

如何触发 HTML 链接(锚元素)的默认操作/事件?也就是使用 JavaScript/jQuery 来“点击”一个现有的 HTML 链接,就好像用户点击了它一样。

只使用.click() 似乎不起作用。

$('#alink').click();
// the nothing happening

对于这个 HTML:

<a id="alink" href="http://google.com" target="_blank">a link</a>

小提琴示例:http://jsfiddle.net/dCfD8/

我宁愿不在 JavaScript 中创建一个新窗口(并在点击链接时处理其他需要处理的事情)。

【问题讨论】:

  • @Digital Plane,谢谢,以前没见过。尽管如此,如果知道此事是否有任何变化会很有趣,或者即使对于最新的浏览器(例如 Chrome 13+),“无法完成”的答案仍然适用。

标签: javascript jquery html


【解决方案1】:

您可以在 jQuery 中使用简单的trigger 方法触发点击事件。

$('#alink').trigger('click');

但请注意,即使事件被触发,浏览器也不会跟随链接 href。遵循 href 的唯一方法是自己用鼠标实际单击它。

据我所知,没有办法强制链接表现得就像被点击一样。您必须更改文档位置或类似的东西才能在页面之间实际导航。

【讨论】:

【解决方案2】:

扩展Fabio Cicerchia 对他自己帖子的评论:您可以使用window.open

var link = $('#alink');
var target = link.attr("target");
window.open(link.attr("href"), target ? target : "_self");

【讨论】:

  • +1。好像可以这样。但我担心(默认)弹出处理程序/阻止程序可能会阻止它,而它们会影响普通用户点击链接。
  • 是的,实际上大多数弹出窗口阻止程序都会阻止它,如果它不是由用户交互触发的话。在未设置目标的情况下,您可以将其与doument.location=... 结合使用。也许你应该解释一下背景,为什么你需要这样做。也许这样可以找到替代品。
【解决方案3】:
    <script src='jquery lib source' ></script>
    <script>
    function force()
    {    ...do something...to fill page2
         $('#gopage2').trigger('submit');
    }    
    </script>  
    <form action='#page2' id='gopage2'>
    </form>

    ...
    <span name='#page2'>This is page2</span>

【讨论】:

  • 请考虑为您的答案添加一些解释,而不仅仅是代码。我们的目标是教育人们,使他们理解答案并可以将其应用于其他情况。如果您评论您的代码并添加解释,您的回答不仅对这次提出问题的人更有帮助,而且对将来可能遇到同样问题的任何人都有帮助。
【解决方案4】:

试试这个:

$('#alink').trigger('click');

【讨论】:

  • 这只会调用与单击相关的 jQuery 事件,如果您想“模拟”用户单击锚点以重定向到另一个 url,您可以这样做:document.location = $('#alink').attr('href');
  • 不适用于target="_blank",或任何其他特殊链接属性。
  • OP 的.click() 只是.trigger('click') 的快捷版本。
猜你喜欢
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
相关资源
最近更新 更多