click 是單擊事件, dblclick 是雙擊事件
如果給一個 DOM 元素同時綁定兩個事件,則會導致響應 dblclick 時會同時響應 click
更多精彩
- 更多技術博客,請移步 asing1elife's blog
制定延遲策略
-
set()
用于為待執行方案設置一個延遲 -
clear()
用于清空設置的延遲
var clickTimeout = {
_timeout: null,
set: function (fn) {
var that = this
that.clear()
that._timeout = setTimeout(fn, 300)
},
clear: function () {
var that = this
if (that._timeout) {
clearTimeout(that._timeout)
}
}
}
為單擊事件添加延遲操作
- 由于單擊事件默認優先響應,所以需要為單擊事件設置延遲策略,從而給雙擊事件足夠的響應時間
$('#btn').on('click', function () {
clickTimeout.set(function () {
console.log('this is click')
})
})
在響應雙擊事件時清空延遲
- 雙擊事件響應完畢后,清空延遲策略
$('#btn').on('dblclick', function() {
clickTimeout.clear()
conosle.log('this is dblckick')
})