首先我们新建一个js文件,例如 plugins.js
import Vue from 'vue';
const pointDoms = []; // 使用这个指令的所有DOM对象
Vue.directive('points', {
inserted(el, binding) {
pointDoms.push(el); // 存储使用这个指令的DOM
el.addEventListener('click', () => {
// 禁用所有使用这个指令的DOM结构点击事件
pointDoms.forEach(pointItem => {
pointItem.style.pointerEvents = 'none';
});
setTimeout(() => {
// 启动所有使用这个指令的DOM结构点击事件
pointDoms.forEach(pointItem => {
pointItem.style.pointerEvents = 'auto';
});
}, binding.value || 1500);
});
}
});
在main.js中自行引入
import "@/assets/resource/plugins.js"; // 引入自定义指令防止连点
使用时只需要在需要点击的按钮上加上自定义的指令“v-points”,例如
<span v-points="1000">按钮</span>
<button v-points>按钮</button>
参考: