如果在移动设备上滚动,请阻止点击链接

时间:2016-07-05 13:20:47

标签: javascript jquery html scroll

我有很长的用户可以滚动的垂直链接列表,如果用户滚动,我需要阻止在此链接上触发click事件(触摸)。

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

1 个答案:

答案 0 :(得分:5)

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

希望这有帮助。