2016-07-05 76 views
4

我有很長的用戶可以滾動的垂直鏈接列表,並且我需要防止在用戶滾動時在此鏈接上觸發click事件(觸摸)。如果在手機上滾動,請阻止點擊鏈接

在當前的情況下,當用戶通過點擊鏈接開始滾動時,它也會在鏈接上觸發click。這顯然是不好的。那麼,有沒有辦法阻止這種行爲?

+0

你是否改變了觸摸行爲?在我的手機上,如果我開始滾動鏈接,那麼鏈接不會被觸發... –

+0

在我自己的移動瀏覽體驗中,我遇到過這個問題 - Upvote。 我沒有花費任何努力來試圖遏制這種行爲,但我的頭頂。您可以創建一個更大的元素來分隔實際鏈接和_item_的其餘部分。請仔細看這篇文章... – Terrance00

回答

4

Working fiddle

我們可以用一個標誌,在這種情況下,防止剛剛在滾動過程中click事件和滾動停止後啓用它。

要聽上滾動停止,你可以使用jQuery的數據的方法,讓我們能夠與DOM節點的任意數據,並使用setTimeout()功能,將檢查每250ms如果用戶仍然觸發滾動相關聯的能力,如果沒有它會改變國旗:

var disable_click_flag = false; 

$(window).scroll(function() { 
    disable_click_flag = true; 

    clearTimeout($.data(this, 'scrollTimer')); 

    $.data(this, 'scrollTimer', setTimeout(function() { 
     disable_click_flag = false; 
    }, 250)); 
}); 

$("body").on("click", "a", function(e) { 
    if(disable_click_flag){ 
     e.preventDefault(); 
    } 
}); 

希望這會有所幫助。