Jquery触发器不起作用

时间:2013-07-26 06:02:05

标签: javascript jquery

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
  </script>
  <title>test trigger</title>
</head>
<body>

  <script>
  $(document).ready(function(){ // on document ready
    $("#testbed").trigger('click'); // click the element
  })
  </script>

  <a id="testbed" href="http://www.google.com">testing</a>
</body>
</html>

我希望此代码在文档准备好后自动单击testbed链接。但是没有点击链接。

8 个答案:

答案 0 :(得分:2)

首先你应该知道.trigger()函数不能用于模仿本机浏览器事件,例如单击文件输入框或锚标记。

$("#testbed").trigger('click'); // it will not change the current page.

你必须使用.simulate()来模仿这样的原生浏览器事件,

$( "a" ).simulate( "click" );

要使用.simulate()功能,您必须在文件中加入simulate.js

你可以参考这个页面, triggering event handelers

答案 1 :(得分:1)

您需要定义点击testbed

$(document).ready(function(){ // on document ready    
    $("#testbed").click(function(){ // on document ready
       alert("clicked");
    });
    $("#testbed").trigger('click'); // click the element
});

如果您不想拥有点击事件,只想导航到链接的href,那么您可以使用window.location.href = url;

$(document).ready(function(){ // on document ready       
    window.location.href = document.getElementById("testbed").href;
});

尽可能使用使用本机功能和属性等来获得性能。您可以检查jspref上不同属性访问方法的性能差异。

答案 2 :(得分:1)

触发click事件。试试例如:

$(document).ready(function(){ // on document ready
    $("#testbed").on ('click', function() {
        alert('click event');
    });

    $("#testbed").trigger('click'); // click the element
})

访问href中的网址的实际操作不会发生。您可以使用window.location更改页面并绕过jQuery。

答案 3 :(得分:0)

为什么不尝试这个

<script>
$(document).ready(function(){ // on document ready
    var url = "http://www.google.com";
    window.location.href = url;
})
</script>

答案 4 :(得分:0)

触发器用于执行链接测试平台没有的点击事件。如果要将页面重定向到该链接,为什么不使用window.location.href

window.location.href = $("#testbed").attr('href');

答案 5 :(得分:0)

.click()调用定义的点击功能。它不会模拟用户点击。以下代码应该为您提供所需的功能。

$(document).ready(function(){  

//Define click function
  $("#testbed").click(function(){
     window.location.href = $("#testbed")[0].href;
  });

//Trigger the click event.
  $("#testbed").trigger('click');
});

答案 6 :(得分:0)

请尝试以下代码:

 <script>
  $(document).ready(function(){ // on document ready

   //Following code simulates a click event
    anchorObj =  $("#testbed")[0]; 
    var evt = new MouseEvent('click', {
      'view': window,
      'bubbles': true,
      'cancelable': true
    });
    anchorObj.dispatchEvent(evt);
  });
  </script>

这将起作用,因为它模拟锚点上的实际点击事件。但是jQuery click不起作用,因为它只会执行为元素定义的点击处理程序。

答案 7 :(得分:0)

你可以试试这个,

<script>
$(document).ready(function(){ // on document ready
  $("#testbed")[0].click(); // click the element
})
</script>