jQuery:如何触发锚链接的点击事件

Ven*_*ana 50 jquery

我有一个锚链接

<a id="myanchor" href="http://google.com" target="_blank">Google</a>
Run Code Online (Sandbox Code Playgroud)

如何以编程方式在新选项卡中打开href目标?

Igo*_* G. 103

请尝试以下方法:

$("#myanchor")[0].click()

就如此容易.

  • 这通过调用#myanchor jQuery对象集中的第一个元素(第0个)的本机(非jQuery)单击函数来工作. (3认同)

GvS*_*GvS 20

调用click事件(不执行重定向)和导航到该href位置有所不同.

导航:

 window.location = $('#myanchor').attr('href');
Run Code Online (Sandbox Code Playgroud)

在新标签页或窗口中打开:

 window.open($('#myanchor').attr('href'));
Run Code Online (Sandbox Code Playgroud)

调用click事件(调用javascript):

 $('#myanchor').click();
Run Code Online (Sandbox Code Playgroud)

  • $('#anchor').click()不起作用! (7认同)

Tra*_*man 18

即使这篇文章是caput,我认为这是一个很好的演示,可以用jQuery来讨论一些问题,即思考click()实际上点击一个元素,而不是仅仅发送一个通过DOM冒泡的点击事件.假设您实际上需要模拟点击事件(即用于测试目的等).如果是这种情况,只要您使用现代浏览器就可以使用HTMLElement.prototype.click(请参阅此处查看方法详细信息以及指向W3规格).这应该适用于几乎所有的浏览器,特别是如果你正在处理链接,window.open如果你需要,你可以很容易地回归:

var clickLink = function(linkEl) {
  if (HTMLElement.prototype.click) {
    // You'll want to create a new element so you don't alter the page element's
    // attributes, unless of course the target attr is already _blank
    // or you don't need to alter anything
    var linkElCopy = $.extend(true, Object.create(linkEl), linkEl);
    $(linkElCopy).attr('target', '_blank');
    linkElCopy.click();
  } else {
    // As Daniel Doezema had said
    window.open($(linkEl).attr('href'));
  }
};
Run Code Online (Sandbox Code Playgroud)