0

我必须检查哪个触发了单击事件,用鼠标单击或 .click() 函数。是否可以?

4

2 回答 2

1

您可以通过查看事件对象的pageXor属性来判断,如果使用了该属性,则如果发生了实际的鼠标单击,则为数字。例如:pageYundefined$("some selector").click();

(function($) {

  $("#target").click(function(e) {
    if (typeof e.pageX === "undefined") {
      display("Fired programatically");
    }
    else {
      display("Fired by real click");
    }
  });

  setTimeout(function() {
    $("#target").click();
  }, 500);

  function display(msg) {
    $("<p>").html(String(msg)).appendTo(document.body);
  }

})(jQuery);

实时复制| 来源

当然,如果有人真的很聪明并构建了一个包含虚假pageXpageY信息的完整点击事件,那将无法正常工作,但 jQuery 的默认处理$("some selector").click();不会这样做。

于 2013-02-14T15:26:11.400 回答
1

是的,你可以这样做......

$('button').on("click", function(e){
    if (e.originalEvent !== undefined) {
        // the button was actually clicked
    } else {
        // the button was triggered by code
    }
});
于 2013-02-14T15:30:08.597 回答