Javascript 如果在手机上滚动,则禁止单击链接

Javascript 如果在手机上滚动,则禁止单击链接,javascript,jquery,html,scroll,Javascript,Jquery,Html,Scroll,我有一个长长的垂直链接列表,用户可以滚动浏览,如果用户滚动,我需要防止触发此链接上的单击事件(触摸) 在当前场景中,当用户通过点击链接开始滚动时,它还会触发链接上的单击。这显然很糟糕。那么,有没有办法防止这种行为呢? 在这种情况下,我们可以使用一个标志来防止仅在滚动期间发生单击事件,并在滚动停止后启用它 要监听滚动停止,您可以使用jQuery的数据方法,该方法使我们能够将任意数据与DOM节点关联,并使用setTimeout()函数,该函数将每隔250ms检查一次用户是否仍触发滚动,如果未触发滚动

我有一个长长的垂直链接列表,用户可以滚动浏览,如果用户滚动,我需要防止触发此链接上的
单击事件(触摸)

在当前场景中,当用户通过点击链接开始滚动时,它还会触发链接上的
单击。这显然很糟糕。那么,有没有办法防止这种行为呢?

在这种情况下,我们可以使用一个标志来防止仅在滚动期间发生
单击事件,并在滚动停止后启用它

要监听滚动停止,您可以使用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();
    }
});

希望这有帮助。

您是否更改了触摸行为?在我的手机上,如果我开始在链接上滚动,那么链接就不会被触发……根据我自己的手机浏览经验,我在投票前遇到了这个问题。我并没有花费任何努力来遏制这种行为,但我已经迫不及待了。您可以创建一个更大的元素,将实际链接和项目的其余部分分开。我会仔细看这篇文章。。。