1
<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>

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

4

8 回答 8

2

首先你应该知道这个.trigger()函数不能用来模拟原生浏览器事件,比如点击一个文件输入框或者一个锚标签。

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

您必须使用 .simulate() 来模拟此类本机浏览器事件,

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

要使用.simulate()函数,您必须包含simulate.js在您的文件中。

你可以参考这个页面, 触发事件处理程序

于 2013-07-26T06:52:24.393 回答
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检查不同属性访问方法的性能差异。

于 2013-07-26T06:04:54.840 回答
1

事件click被触发。尝试例如:

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

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

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

于 2013-07-26T06:05:58.920 回答
0

你为什么不试试这个

<script>
$(document).ready(function(){ // on document ready
    var url = "http://www.google.com";
    window.location.href = url;
})
</script>
于 2013-07-26T06:04:43.650 回答
0

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

window.location.href = $("#testbed").attr('href');
于 2013-07-26T06:05:38.323 回答
0

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

$(document).ready(function(){  

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

//Trigger the click event.
  $("#testbed").trigger('click');
});
于 2013-07-26T06:18:59.360 回答
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 不起作用,因为它只会执行为元素定义的点击处理程序。

于 2013-07-26T06:32:30.737 回答
0

你可以试试这个

<script>
$(document).ready(function(){ // on document ready
  $("#testbed")[0].click(); // click the element
})
</script>
于 2013-07-26T06:33:29.890 回答