<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>购物车防抖按钮</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<button class="sub">-</button>
<span class="total_price">0</span>
<button class="add">+</button>
<script>
var timeout=null;
var num=0;
function settlement(num){
return function(){
console.log('结算了',num);
}
}
function debounce(func, wait = 2000, immediate = true) {
let timer = null;
return function (...args) {
clearTimeout(timer);
if (immediate) {
let callNow = !timer;
timer = setTimeout(() => {
timer = null;
}, wait);
if (callNow) {
func.apply(this, args);
}
} else {
timer = setTimeout(() => {
func.apply(this, args);
}, wait);
}
};
}
$('.sub').on('click',function(){
if(num<=0){
this.disabled=true;
num=0;
}else{
num--;
}
$('.total_price').text(num);
debounce(settlement(num));
})
$('.add').on('click',function(){
if(num>0){
$('.sub')[0].disabled=false;
}
num++;
$('.total_price').text(num);
debounce(settlement(num));
})
</script>
</body>
</html>