2016-09-02 126 views
0

我有一個問題,JQuery的懸停和點擊手機..讓我解釋一下!Jquery點擊需要點擊兩次移動

我有正方形的div,當鼠標懸停時,會出現一個新的div並按照鼠標。你甚至可以點擊正方形的div,如果是的話,打開一個新的頁面。現在的問題是,在手機上,我需要兩次點擊才能打開新頁面,因爲第一次點擊被讀作「懸停」。

我試過

$("#mydiv").on('click touchend', function(e) 

其實它的工作原理,但這個問題,如果我想滾動移動的頁面,我開始在廣場上的div輕掃,新頁面打開,它不應該因爲我沒有點擊方格div,只是「通過」。

回答

0

作爲每文檔中的一個:

「的事件的目標的內容爲接收對應於觸摸點的touchstart事件相同的元件,即使如果觸摸點已經移出該元素「。

你可以看到touchend也文檔:

https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent

如果你即使你移動開始與正方形的DIV,然後平方米格touchend事件將是手指的釋放後解僱你的滾動你的手指到其他元素。

爲了解決這個問題,你可以使用這些事件:如果你想堅持這個touchend事件

https://github.com/benmajor/jQuery-Touch-Events#4-the-events

然後有解決方法: 聲明一個全局變量,即

var isScroll = false, timer; 

在僅觸發設備的文檔上應用touchmove事件處理程序,此處理程序檢測文檔是否正在滾動,如果是,請將isScroll標誌設置爲true,並在500毫秒後爲false:

$(document).on("touchmove", function(e) { 
    isScroll = true; 
    if(timer) clearTimeout(timer); 
    timer = setTimeout(function() { 
    isScroll = false; 
    }, 800); 

})

,如果插入條件在您的事件處理程序:

$("#mydiv").on('click touchend', function(e) { 
    if(!isScroll) { 
    //insert your code here; 
    } 
}