如何通过触发点击

时间:2016-01-21 14:45:02

标签: javascript jquery

我有两个按钮,即“拒绝按钮”和“上一个按钮”。单击“拒绝”按钮时,我正在对“上一个”按钮进行触发调用。是否可以通过单击“拒绝”按钮来了解Prev按钮处理程序内部的请求?

这是我的代码

$(document).on('click', '#prev', function(event) {
  var event_from = event.target.tagName;
  alert(event_from);
});

$(document).on('click', '#reje', function(event) {
  $("#prev").click();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <input type="button" id="reje" value="Reject">
</div>
<input type="button" id="prev" value="prev">

我尝试使用event.target.tagName;,但在两种情况下我都获得INPUT的价值

http://jsfiddle.net/Us8uc/4350/

1 个答案:

答案 0 :(得分:5)

  

是否可以通过单击“拒绝”按钮了解Prev按钮处理程序内部的请求?

一种选择是检查.isTrigger对象上的event属性。如果事件被触发(例如在这种情况下),它应该返回true。正如下面的评论所指出的,这个 是一个未记录的内部特征,can potentially change(尽管在这一点上可能不太可能)。请参阅下面的其他替代选项。

Updated Example

$(document).on('click', '#prev', function(event) {
  if (event.isTrigger) {
    alert('Triggered by reject.');
  }
});

$(document).on('click', '#reje', function(event) {
  $("#prev").click();
});

您还可以检查.originalEvent对象上的event属性,以确定事件的来源。该属性仅在事件originated from the browser时设置,这意味着触发后它将为undefined

Updated Example

$(document).on('click', '#prev', function(event) {
  if (event.originalEvent === undefined) {
    alert('Triggered by reject.');
  }
});

$(document).on('click', '#reje', function(event) {
  $("#prev").click();
});

或者,您可以在触发click事件之前设置一个标志:

Updated Example

var triggeredByReject = false;

$(document).on('click', '#prev', function(event) {
  if (triggeredByReject) {
    triggeredByReject = false;
    alert('Triggered by reject.');
  }
});

$(document).on('click', '#reje', function(event) {
  triggeredByReject = true;
  $("#prev").click();
});

另一种选择是比较事件的时间戳:

Updated Example

var lastRejectClick = 0;
$(document).on('click', '#prev', function(event) {
  if (lastRejectClick > event.timeStamp) {
    alert('Triggered by reject.');
  }
});

$(document).on('click', '#reje', function(event) {
  lastRejectClick = event.timeStamp + 10;
  $("#prev").click();
});

*我在时间戳上加了10毫秒,以说明潜在的时间戳近似值/差异。