如何知道请求来自触发器点击

Paw*_*wan 2 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();
});
Run Code Online (Sandbox Code Playgroud)
<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">
Run Code Online (Sandbox Code Playgroud)

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

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

Jos*_*ier 5

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

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

更新的示例

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

$(document).on('click', '#reje', function(event) {
  $("#prev").click();
});
Run Code Online (Sandbox Code Playgroud)

您还可以检查对象.originalEvent上的event属性,以确定事件的来源.仅当事件源自浏览器时才设置该属性,这意味着它将在被undefined触发时:

更新的示例

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

$(document).on('click', '#reje', function(event) {
  $("#prev").click();
});
Run Code Online (Sandbox Code Playgroud)

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

更新的示例

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();
});
Run Code Online (Sandbox Code Playgroud)

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

更新的示例

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();
});
Run Code Online (Sandbox Code Playgroud)

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