Javascript 按钮在移动设备上的反应与在桌面上的反应不同
我的问题看起来很简单,但我真的很难解决。以下是一个链接: 这个按钮的工作原理是惊人的,但当你在手机上打开它并点击它时——它不像在桌面上那样工作,它不会回到原来的形式(只是在最后停留在x) 我需要它在手机上工作,就像在桌面上一样 可能是setTimeout的问题 以下是我的JS代码:Javascript 按钮在移动设备上的反应与在桌面上的反应不同,javascript,html,css,button,mobile,Javascript,Html,Css,Button,Mobile,我的问题看起来很简单,但我真的很难解决。以下是一个链接: 这个按钮的工作原理是惊人的,但当你在手机上打开它并点击它时——它不像在桌面上那样工作,它不会回到原来的形式(只是在最后停留在x) 我需要它在手机上工作,就像在桌面上一样 可能是setTimeout的问题 以下是我的JS代码: (function () { var removeSuccess; removeSuccess = function () { return $('.btn-cart').remov
(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。在问题本身中始终提供答案。而且你的返回值也没有任何意义,我想可能是这样的。但现在该怎么办呢?