Javascript 如何防止滚动时单击?

Javascript 如何防止滚动时单击?,javascript,jquery,Javascript,Jquery,我有一个滑块的基础上滚动。滑块是专为自适应控制器设计的。但在dekstop我遇到了一个问题。当我开始滑动滚动时,我会自动单击链接。我怎样才能预防它 $('.js_slider-item').on('dragstart', function() { return false; }); // slider $('.js_slider-viewport').each(function() { var slider = $(this), sliderCl

我有一个滑块的基础上滚动。滑块是专为自适应控制器设计的。但在dekstop我遇到了一个问题。当我开始滑动滚动时,我会自动单击链接。我怎样才能预防它

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