我有一个奇怪的情况。我正在编辑一个包含大量移动部件的页面。
无论如何,我有一个对话框(弹出窗口)绑定(bind)(通过对话框创建类)到主体点击处理程序。基本上,如果您单击页面上的任意位置,它就会关闭。好的,太好了。
问题就在这里。页面上还有另一个进程运行“$(body).trigger('click')”。这造成了一个问题,因为在这种情况下,我不希望我的特定对话框关闭。
我进行了一些测试,它们看起来是一样的—— 1.) 通过触发器产生点击 2.) 并实际点击页面正文。
是否有任何明显的方法可以知道点击是“假”触发调用还是真正的“点击”事件?由于在触发的点击中没有任何冒泡,是否有办法以某种方式尝试查看页面上是否有子元素以查看其是否冒泡或其他什么?
我希望我的解释足够简洁。
最佳答案
HTML:
<input type="button" id="button" value="click me" />
JS:
$("#button").on("click", function(e) {
if(typeof e.isTrigger == 'undefined') {
console.log("clicked");
} else {
console.log("triggered");
}
});
setTimeout(function() {
$("#button").trigger("click");
}, 1000);
演示:http://jsfiddle.net/wXnwp/1/
jQuery 1.6 版本 => http://jsfiddle.net/wXnwp/3/
$("#button").click(function(e) {
if(typeof e.ctrlKey !== 'undefined') {
console.log("clicked");
} else {
console.log("triggered");
}
});
setTimeout(function() {
$("#button").trigger("click");
}, 1000);
关于javascript - 有什么方法可以知道点击是来自 "trigger"还是实际点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18975870/