From 1c750dcec767bfadb75283343be035b201e91a15 Mon Sep 17 00:00:00 2001 From: Leopoldthecoder Date: Tue, 6 Dec 2016 16:55:42 +0800 Subject: [PATCH] Slider: avoid clicking triggering right after dragend --- packages/slider/src/main.vue | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/slider/src/main.vue b/packages/slider/src/main.vue index a2c178fcd..6d7710f9d 100644 --- a/packages/slider/src/main.vue +++ b/packages/slider/src/main.vue @@ -157,7 +157,7 @@ }, onSliderClick(event) { - if (this.disabled) return; + if (this.disabled || this.dragging) return; const sliderOffsetLeft = this.$refs.slider.getBoundingClientRect().left; this.setPosition((event.clientX - sliderOffsetLeft) / this.$sliderWidth * 100); }, @@ -189,7 +189,13 @@ onDragEnd() { if (this.dragging) { - this.dragging = false; + /* + * 防止在 mouseup 后立即触发 click,导致滑块有几率产生一小段位移 + * 不使用 preventDefault 是因为 mouseup 和 click 没有注册在同一个 DOM 上 + */ + setTimeout(() => { + this.dragging = false; + }, 0); this.$refs.tooltip.showPopper = false; this.setPosition(this.newPos); window.removeEventListener('mousemove', this.onDragging);