我有两个按钮,即“拒绝按钮”和“上一个按钮”。单击“拒绝”按钮时,我正在对“上一个”按钮进行触发调用。是否可以通过单击“拒绝”按钮来了解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
的价值
答案 0 :(得分:5)
是否可以通过单击“拒绝”按钮了解Prev按钮处理程序内部的请求?
一种选择是检查.isTrigger
对象上的event
属性。如果事件被触发(例如在这种情况下),它应该返回true。正如下面的评论所指出的,这个 是一个未记录的内部特征,can potentially change(尽管在这一点上可能不太可能)。请参阅下面的其他替代选项。
$(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
:
$(document).on('click', '#prev', function(event) {
if (event.originalEvent === undefined) {
alert('Triggered by reject.');
}
});
$(document).on('click', '#reje', function(event) {
$("#prev").click();
});
或者,您可以在触发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();
});
另一种选择是比较事件的时间戳:
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毫秒,以说明潜在的时间戳近似值/差异。