javascript - 如果在移动设备上滚动,则防止点击链接

标签 javascript jquery html scroll

我有很长的垂直链接列表,用户可以滚动浏览这些链接,我需要防止在用户滚动时触发此链接上的 click 事件(触摸)。

在当前情况下,当用户通过点击链接开始滚动时,它还会触发对链接的点击。这显然很糟糕。那么,有什么办法可以防止这种行为吗?

最佳答案

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();
    }
});

希望这对您有所帮助。

关于javascript - 如果在移动设备上滚动,则防止点击链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38204562/

相关文章:

javascript - 我可以告诉有关 JavaScript 中单击的超链接的任何信息吗?

jquery - Ember – 在滚动到顶部时添加类

jquery - 日期选择器不会在 Bootstrap 模式中打开

html - 将 html 页面转换为图像 html2image

javascript - 在 jquery 选择器中访问 div

javascript - 如何将文本标签附加到一个 svg 上,例如带有 "id=50"的 svg 标签?

javascript - JavaScript 中索引和数据的区别?

javascript - 比较哈希值

jquery - 使用Jquery显示特定的JSON对象

php - 叠加两张图片 : keep positioning