防止jQuery在触摸设备上运行mouseenter

防止jQuery在触摸设备上运行mouseenter,jquery,touch,Jquery,Touch,我在jQuery中编写了一些奇特的悬停滚动效果。它们在台式计算机上工作得很好。我的问题是,在移动设备上,由于用户点击屏幕,我的代码仍然认为用户在我的.scrollright div上徘徊,并一直滚动 我如何在移动/平板电脑设备上禁用此功能,或以其他方式防止此问题 $('.thumbnails .scrollright').on('mouseenter', function() { this.iid = setInterval(function() { var Curren

我在jQuery中编写了一些奇特的悬停滚动效果。它们在台式计算机上工作得很好。我的问题是,在移动设备上,由于用户点击屏幕,我的代码仍然认为用户在我的.scrollright div上徘徊,并一直滚动

我如何在移动/平板电脑设备上禁用此功能,或以其他方式防止此问题

$('.thumbnails .scrollright').on('mouseenter', function() {
    this.iid = setInterval(function() {
        var CurrentScrollLeft = $( ".thumbnails .thumbnailphotos" ).scrollLeft();
        $( ".thumbnails .thumbnailphotos" ).scrollLeft( CurrentScrollLeft+10 );         
    }, 50);
    }).on('mouseleave', function(){
        this.iid && clearInterval(this.iid);
    });

可以快速检查一下触摸吗

var tap = ("ontouchstart" in document.documentElement);
然后将代码包装在以下条件中:

if(!tap){
    $('.thumbnails .scrollright').on('mouseenter', function() {
        this.iid = setInterval(function() {
            var CurrentScrollLeft = $( ".thumbnails .thumbnailphotos" ).scrollLeft();
            $( ".thumbnails .thumbnailphotos" ).scrollLeft( CurrentScrollLeft+10 );         
        }, 50);
    }).on('mouseleave', function(){
        this.iid && clearInterval(this.iid);
    });
}

无论如何都是这样。

谢谢你,克里斯,这很管用(至少在Android上是这样)。这种方法是否也适用于iOS和所有其他主要触摸设备?我这里只有Android设备可以测试。嗨,克里斯。是的,应该是全面的。至少在只处理移动设备时。当考虑到触控和鼠标事件的设备时,这可能会变得棘手。code>if(window.PointerEvent){//pointer对象存在时要做的事情}这对于有触摸屏和鼠标的设备不起作用。例如,触摸屏笔记本电脑。