2016-05-17 109 views
0

我正在研究一个相当大的Web应用程序,我的一些点击处理程序在移动设备上注册了两次点击。请注意,这些都是click事件,不是我不能隔离和繁殖在沙箱或小提琴,这意味着这个问题有可能是一个问题,其他地方在我的代码的clicktouchstart ....移动触发两个“点击”事件

$("#myDiv").on('click', function(e){ 
    console.log(e); // logs two click events despite code below 

    e.stopPropagation(); 
    e.stopImmediatePropagation(); 
    e.preventDefault(); 

    return false; 
}); 

情况。

不过,我已经得到了解决方法,因为我注意到,在这两个事件中的一个发射的观点属性为:

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, 
    ... 
} 

有谁知道这可能是导致本次点击事件,为什么在第一个事件中视图属性为null?

+0

是否使用姿势库? –

+0

http://stackoverflow.com/questions/10794181/jquery-mobile-tap-event-triggered-for-twice –

+0

没有手势库,并且这两个事件都是'click'事件,没有'tap' –

回答

0

很可能您正在iOS设备上进行测试。 在ios设备中,第一次触摸被视为hover事件,第二次触摸被视为touch,这就是您获取此行为的原因。 我也患了这个。 我做了什么解决这个删除所有悬停CSS和写这个jQuery。

 <script>$('a').on('click touchend', function(e) { 
         var el = $(this); 
         var link = el.attr('href'); 
         window.location = link; 
         });</script> 
    <script>$('button').on('click touchend', function(e) { 
         var el = $(this); 
         var link = el.attr('href'); 
         window.location = link; 
         });</script> 

我不认为这是最好的解决方案,但它的工作原理。只有我必须没有悬停地工作。

请让你找到it.Here的任何其他解决方案是myquestion链接我知道:

MyQuestion

+0

如果这个问题是由'touch'事件引起的,那么'event .type'反映这个? –