我必须检查哪个触发了单击事件,用鼠标单击或 .click() 函数。是否可以?
问问题
204 次
2 回答
1
您可以通过查看事件对象的pageX
or属性来判断,如果使用了该属性,则如果发生了实际的鼠标单击,则为数字。例如:pageY
undefined
$("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);
当然,如果有人真的很聪明并构建了一个包含虚假pageX
和pageY
信息的完整点击事件,那将无法正常工作,但 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 回答