Javascript 如何防止滚动时单击?
我有一个滑块的基础上滚动。滑块是专为自适应控制器设计的。但在dekstop我遇到了一个问题。当我开始滑动滚动时,我会自动单击链接。我怎样才能预防它Javascript 如何防止滚动时单击?,javascript,jquery,Javascript,Jquery,我有一个滑块的基础上滚动。滑块是专为自适应控制器设计的。但在dekstop我遇到了一个问题。当我开始滑动滚动时,我会自动单击链接。我怎样才能预防它 $('.js_slider-item').on('dragstart', function() { return false; }); // slider $('.js_slider-viewport').each(function() { var slider = $(this), sliderCl
$('.js_slider-item').on('dragstart', function() {
return false;
});
// slider
$('.js_slider-viewport').each(function() {
var slider = $(this),
sliderClosest = $(this).closest('.js_slider'),
sliderMouse = false,
sliderPos,
sliderX,
scroll,
movePos,
moveX,
moveWalk;
// mousedown
slider.on('mousedown', function(e) {
sliderMouse = true;
sliderPos = slider.offset();
sliderX = e.pageX - sliderPos.left;
scroll = slider.scrollLeft();
});
// mouseleave
slider.on('mouseleave', function(e) {
sliderMouse = false;
});
// mouseup
slider.on('mouseup', function(e) {
sliderMouse = false;
});
// mousemove
slider.on('mousemove', function(e) {
if (!sliderMouse) return;
e.preventDefault();
movePos = slider.offset(),
moveX = e.pageX - sliderPos.left,
moveWalk = (moveX - sliderX) * 2;
slider.scrollLeft(scroll - moveWalk);
});
});
您可以添加一个事件监听器,将所有单击事件转移到文档或窗口上,这样它就不会在页面(文档/窗口)的任何位置单击时执行默认行为 代码可能看起来像(示例代码-sudo代码) 然后,一旦用户停止滚动,就可以删除单击侦听器
// remove event listener from document
$(document).removeEventListener("click", function () {
// console.log(' click is not allowed while scrolling');
alert('clicked blocked ');
});
我检查了你的代码,工作正常。无论是在台式机还是移动设备上,它都不明显。但如果您尝试在本地滚动,那么您将注意到在滚动过程中单击了链接。
// remove event listener from document
$(document).removeEventListener("click", function () {
// console.log(' click is not allowed while scrolling');
alert('clicked blocked ');
});