【发布时间】:2016-05-19 00:16:35
【问题描述】:
我正在开发一个相当大的网络应用程序,我的一些点击处理程序正在移动设备上注册两次点击。请注意,这些都是click 事件,而不是click 和touchstart....
$("#myDiv").on('click', function(e){
console.log(e); // logs two click events despite code below
e.stopPropagation();
e.stopImmediatePropagation();
e.preventDefault();
return false;
});
我无法在沙盒或小提琴中隔离和重现问题,这意味着我的代码中的其他地方可能存在问题。
但是,我已经设法解决了问题,因为我注意到在触发的两个事件之一中 view 属性为空:
event(1){
altKey:false,
bubbles:true,
button:0,
...
...
type: "click",
view: null, // <------this is null for some reason
...
}
event(2){
altKey:false,
bubbles:true,
button:0,
...
...
type: "click",
view: Window,
...
}
有谁知道导致第二次点击事件的原因以及为什么 view 属性在第一个事件中为空?
【问题讨论】:
-
你在使用手势库吗?
-
没有手势库,而且这两个事件都是
click事件,没有'tap` -
你在代码的什么地方添加了点击事件?是在jqm pageshow还是pagecreate中?
-
@ezanker 也没有,这个特定的处理程序绑定在 ajax 调用的
done回调中,在获取的 html 附加到页面之后......
标签: javascript jquery mobile