【问题标题】:Using jQuery to programmatically click an <a> link使用 jQuery 以编程方式单击 <a> 链接
【发布时间】:2012-02-23 06:48:00
【问题描述】:

我知道以前有人问过这个问题,但是在网上搜索后,我似乎找不到直接的答案。

HTML

<a id=myAnchor href=index.php>

jQuery(这两个都不起作用)

 $('#myAnchor').click();

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

实现这一目标的最简单、最有效的方法是什么?

【问题讨论】:

标签: jquery hyperlink click anchor


【解决方案1】:

试试这个:

$('#myAnchor')[0].click();

它对我有用。

【讨论】:

  • 这对我有用,而实际上没有其他东西。非常感谢! +1
  • 这对旧版浏览器有问题。如果您需要广泛的兼容性,请不要使用它。
  • 谢谢!多年来,我一直试图弄清楚如何以编程方式点击链接。对我来说,问题是那里没有那个“[0]”。这叫什么,为什么有必要?
  • @EricHepperle-CodeSlayer2010,[0].get(0) 的简写,它返回 JQuery 对象所引用的底层 DOM 元素。这允许您直接在有效的 DOM 元素上调用 .click() 方法,而不是在不起作用的 jQuery 对象上调用。
  • @10GritSandpaper 啊哈...感谢您的解释!我现在明白了。
【解决方案2】:
window.location = document.getElementById('myAnchor').href

【讨论】:

  • 我个人更喜欢这种方法,因为它避免了创建“伪造”事件的需要。
  • 这曾经是一种流行的重定向到链接的方式,但不知何故它成为了如今失传的古老技术:)
  • @RoryMcCrossan 仅当锚点的目的是重定向您时。如果不是呢?如果它打开一个模态怎么办?或者发送一个ajax请求?还是通过 pjax 加载页面?
  • 在这些情况下,您应该直接调用执行这些操作的函数,而不是在按钮上伪造点击事件。
【解决方案3】:

点击只是触发点击事件/事件而不是真正的“goto-the-links-href”动作。

您必须编写自己的处理程序,然后您的 $('#myAnchor').trigger('click'); 才能工作...

$("#myAnchor").click(function(event)
{
  var link = $(this);
  var target = link.attr("target");

  if($.trim(target).length > 0)
  {
    window.open(link.attr("href"), target);
  }
  else
  {
     window.location = link.attr("href");
  }

  event.preventDefault();
});

【讨论】:

  • 我最喜欢的,因为它解决了目标问题。它会触发弹出窗口拦截器吗?
【解决方案4】:
<a href="#" id="myAnchor">Click me</a>

<script type="text/javascript">
$(document).ready(function(){
    $('#myAnchor').click(function(){
       window.location.href = 'index.php';
    });
})
</script>

【讨论】:

    【解决方案5】:

    onclick="window.location = this.href" 添加到您的&lt;a&gt; 元素。在此修改之后,它可能是 .click()ed 并具有预期的行为。要对页面上的每个链接执行此操作,您可以添加以下内容:

    <script type="text/javascript">
        $(function () {
            $("a").attr("onclick", "window.location = this.href");
        });
    </script>
    

    【讨论】:

    • 仅供参考:在 IE7 中不起作用。死,IE7,死!否则非常好的解决方法!
    【解决方案6】:

    我尝试了一些上述解决方案,但它们对我不起作用。这是对我有用的页面的链接automatically click a link

    上面的链接有很多解决方案,这是对我有用的一个,

        <button onclick="fun();">Magic button</button>
    
        <!--The link you want to automatically click-->
        <a href='http://www.ercafe.com' id="myAnchor">My website</a>
    

    现在在&lt;script&gt; 标签内,

    <script>
    
         function fun(){
              actuateLink(document.getElementById('myAnchor'));
         }
    
         function actuateLink(link)
         {
              var allowDefaultAction = true;
    
              if (link.click)
              {
                  link.click();
                  return;
              }
              else if (document.createEvent)
              {
                  var e = document.createEvent('MouseEvents');
                  e.initEvent(
                       'click'     // event type
                       ,true      // can bubble?
                       ,true      // cancelable?
                  );
                  allowDefaultAction = link.dispatchEvent(e);           
              }
    
              if (allowDefaultAction)       
              {
                  var f = document.createElement('form');
                  f.action = link.href;
                  document.body.appendChild(f);
                  f.submit();
              }
        }
    
    </script>
    

    复制粘贴上面的代码,点击'Magic button'按钮,你会被重定向到ErCafe.com

    【讨论】:

    • 这是唯一适合我的情况!有些人甚至说 jQuery click 很简单——对我来说根本不是。这个解决方案很棒。
    【解决方案7】:

    我有类似的问题。试试这个$('#myAnchor').get(0).click();这对我有用

    【讨论】:

      【解决方案8】:

      如果你使用的是 jQuery,你可以使用 jQuery.trigger http://api.jquery.com/trigger/

      例子

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title></title>
          <script type="text/javascript" src="https://code.jquery.com/jquery-2.2.3.js"></script>
      </head>
      <body>
          <a id="foo" onclick="action()"></a>
          <script type="text/javascript">
              function action(){
                  window.location.replace("http://stackoverflow.com/q/9081426/5526354")
              }
      
              $("#foo").trigger("click");
          </script>
      </body>
      </html>
      

      【讨论】:

        【解决方案9】:

        试试这个兼容性;

        <script type="text/javascript">
                $(function() {
                    setTimeout(function() {
                        window.location.href = $('#myAnchor').attr("href");
        
                    }, 1500);
                });
            </script>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-07-15
          • 1970-01-01
          • 2010-10-16
          • 2015-10-19
          • 2016-08-07
          • 1970-01-01
          • 2010-10-28
          相关资源
          最近更新 更多