使用javascript以编程方式单击非按钮元素?

Kev*_*vin 13 javascript

如何使用javascript以编程方式单击非按钮元素?或者至少可以在Firefox和Chrome等浏览器中使用它?

T.J*_*der 13

信不信由你,对于一个相当基本的点击,你可以打电话click(但更多下面):实例 | 直播源

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Artificial Click</title>
</head>
<body>
  <div id="foo">xxxxxxx</div>
  <script>
    (function() {
      var foo = document.getElementById("foo");
      foo.addEventListener("click", function() {
        display("Clicked");
      }, false);
      setTimeout(function() {
        display("Artificial click:");
        foo.click(); // <==================== The artificial click
      }, 500);
      function display(msg) {
        var p = document.createElement('p');
        p.innerHTML = String(msg);
        document.body.appendChild(p);
      }
    })();
  </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

您还可以创建相关类型的Event对象并使用dispatchEvent它将其发送到元素:

var e = new MouseEvent("click", {
  view: window,
  bubbles: true,
  cancelable: true
});
foo.dispatchEvent(e);
Run Code Online (Sandbox Code Playgroud)

这让你有机会做的事情就像其它信息(典型的pageXpageY您所模拟的事件,例如).

有关DOM Events规范第5节中各种事件对象类型的更多信息.


laa*_*sto 8

您可以使用 HTMLElementObject.click()

就像是 document.getElementById('div1').click()

查看更多


Jac*_*ack 5

或者在 jQuery(文档)中点击一个非按钮元素

$( "#nonButton" ).click();
Run Code Online (Sandbox Code Playgroud)

或监听对该非按钮元素的点击

$("#nonButton").on("click", doSomething);
Run Code Online (Sandbox Code Playgroud)

  • 非 jQuery 问题的仅 jQuery 答案没有用。 (6认同)