const hold = { mounted(el, binding) { let timer = null; el.startHold = () => { if (!timer) { timer = setInterval(() => { binding.value(); }, 50); } }; el.stopHold = () => { clearInterval(timer); timer = null; }; el.addEventListener("mousedown", el.startHold); el.addEventListener("mouseup", el.stopHold); el.addEventListener("mouseleave", el.stopHold); el.addEventListener("touchstart", el.startHold); // 适配触摸屏 el.addEventListener("touchend", el.stopHold); }, // 绑定元素的父组件卸载前调用 beforeUnmount(el, binding) { el.removeEventListener("mousedown", el.startHold); el.removeEventListener("mouseup", el.stopHold); el.removeEventListener("mouseleave", el.stopHold); el.removeEventListener("touchstart", el.startHold); el.removeEventListener("touchend", el.stopHold); }, } export default hold