我有很长的用户可以滚动的垂直链接列表,如果用户滚动,我需要阻止在此链接上触发click
事件(触摸)。
在当前情况下,当用户通过点击链接开始滚动时,它还会在链接上触发click
。这显然很糟糕。那么,有什么方法可以阻止这种行为吗?
答案 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();
}
});
希望这有帮助。