Javascript 按钮在移动设备上的反应与在桌面上的反应不同

Javascript 按钮在移动设备上的反应与在桌面上的反应不同,javascript,html,css,button,mobile,Javascript,Html,Css,Button,Mobile,我的问题看起来很简单,但我真的很难解决。以下是一个链接: 这个按钮的工作原理是惊人的,但当你在手机上打开它并点击它时——它不像在桌面上那样工作,它不会回到原来的形式(只是在最后停留在x) 我需要它在手机上工作,就像在桌面上一样 可能是setTimeout的问题 以下是我的JS代码: (function () { var removeSuccess; removeSuccess = function () { return $('.btn-cart').remov

我的问题看起来很简单,但我真的很难解决。以下是一个链接:

这个按钮的工作原理是惊人的,但当你在手机上打开它并点击它时——它不像在桌面上那样工作,它不会回到原来的形式(只是在最后停留在x)

我需要它在手机上工作,就像在桌面上一样

可能是setTimeout的问题

以下是我的JS代码:

(function () {
    var removeSuccess;

    removeSuccess = function () {
        return $('.btn-cart').removeClass('success');
    };

    $(document).ready(function () {
        return $('.btn-cart').on("click", function () {
            $(this).addClass('success');
            return setTimeout(removeSuccess, 1000);
        });
    });

}).call(this);

移动设备在触摸一个元素时应用
:悬停
伪类,在触摸另一个元素之前不要删除它。

在移动设备上,您有
触摸
事件。您可以在许多注册
单击
的相同位置使用
touchend

在您的
文档中要检查的内容中添加
touchend
关键字。准备好了吗

 $(document).ready(function () {
        return $('.btn-cart').on("click touchend", function () {
            $(this).addClass('success');
            return setTimeout(removeSuccess, 1000);
        });
    });

试试这段代码-你有奇怪的回报

$(函数(){//在页面加载时
$('.btn cart')。打开(“touchstart单击”,函数(){
$(this.addClass('success');
setTimeout(函数(){
$('.btn cart').removeClass('success');
}, 1000);
});
});

经过几次尝试后,这对我来说是有效的:

function watchForHover() {
    var hasHoverClass = false;
    var container = document.body;
    var lastTouchTime = 0;

    function enableHover() {
        // filter emulated events coming from touch events
        if (new Date() - lastTouchTime < 500) return;
        if (hasHoverClass) return;

        container.className += ' hasHover';
        hasHoverClass = true;
    }

    function disableHover() {
        if (!hasHoverClass) return;

        container.className = container.className.replace(' hasHover', '');
        hasHoverClass = false;
    }

    function updateLastTouchTime() {
        lastTouchTime = new Date();
    }

    document.addEventListener('touchstart', updateLastTouchTime, true);
    document.addEventListener('touchstart', disableHover, true);
    document.addEventListener('mousemove', enableHover, true);

    enableHover();
}
函数watchForHover(){
var hasHoverClass=false;
var container=document.body;
var lastTouchTime=0;
函数enableHover(){
//过滤来自触摸事件的模拟事件
如果(新日期()-lastTouchTime<500)返回;
if(hasHoverClass)返回;
container.className+='hasHover';
hasHoverClass=true;
}
函数disableHover(){
如果(!hasHoverClass)返回;
container.className=container.className.replace('hasHover','');
hasHoverClass=false;
}
函数updateLastTouchTime(){
lastTouchTime=新日期();
}
document.addEventListener('touchstart',updateLastTouchTime,true);
document.addEventListener('touchstart',disableHover,true);
document.addEventListener('mousemove',enablehaver,true);
使能悬停();
}

从这里开始:

问题与问题中的代码无关。这完全取决于你的CSS和HTML。在问题本身中始终提供答案。而且你的
返回值也没有任何意义,我想可能是这样的。但现在该怎么办呢?