2016-05-17 162 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'反映這個? –