Jquery如何在href元素上触发click事件

Mon*_*RPG 73 jquery events triggers click hyperlink

我试图用jquery触发超链接上的click事件,如下所示.超链接没有任何ID但它确实有cssclass

 $(document).ready(function () {  $('.cssbuttongo').trigger('click'); }); 
Run Code Online (Sandbox Code Playgroud)

上述功能无效.这是超链接

<a href="hyperlinkurl" class="cssbuttongo">hyperlink anchor</a>
Run Code Online (Sandbox Code Playgroud)

谢谢你的回答.

Rom*_*kov 188

原生DOM方法做正确的事情:

$('.cssbuttongo')[0].click();
                  ^
              Important!
Run Code Online (Sandbox Code Playgroud)

无论href是URL,片段(例如#blah)还是甚至a,这都有效javascript:.

请注意,这会调用DOM click方法而不是jQuery click方法(这是非常不完整且完全忽略的href).

  • 这应该是选定的答案.工作得很完美! (10认同)
  • @AdilMalik之所以起作用,是因为jquery并不是唯一具有click()方法的东西。这段代码调用了非jquery click()方法,这是本机DOM。 (3认同)
  • @Timwi,我的意思是说第一个`$('.cssbuttongo').click(); //忽略href!`不能保证工作.后者将始终有效,因为使用index [0]将使jQuery Object成为常规JS对象,这与浏览器使用的完全相同.@Wei Liu (2认同)

Fei*_*ngo 66

我没有事实证据来证明这一点,但我已经遇到过这个问题.似乎在<a>标签上触发click()事件似乎没有你想象的那样,输入按钮.

我使用的解决方法是在窗口上设置location.href属性,这会导致浏览器加载请求资源,如下所示:

$(document).ready(function()
{
      var href = $('.cssbuttongo').attr('href');
      window.location.href = href; //causes the browser to refresh and load the requested url
   });
});
Run Code Online (Sandbox Code Playgroud)

编辑:

我会做一个js小提琴,但问题的本质与jsfiddle如何使用iframe呈现代码混合在一起使得它变得不合适.

  • 这忽略了链接也有"onclick"事件的可能性.只需要`$('.cssbuttongo')[0] .click()`来正确模拟整个点击. (7认同)

Jos*_*ier 28

除了romkyns的好答案之外 ......这里有一些相关的文档/示例.


DOM元素具有本机.click()方法.

HTMLElement.click()方法模拟鼠标单击元素.

当使用click时,它还会触发元素的click事件,该事件将冒泡到文档树(或事件链)上方的元素并触发其单击事件.但是,点击事件的冒泡不会导致<a>元素启动导航,就像收到真正的鼠标单击一样. (mdn参考)

相关的W3文档.


几个例子..

值得指出的是,jQuery是不是需要触发本地.click()事件.