jQuery 解決 click 和 dblclick 沖突

click 是單擊事件, dblclick 是雙擊事件
如果給一個 DOM 元素同時綁定兩個事件,則會導致響應 dblclick 時會同時響應 click

更多精彩

制定延遲策略

  1. set() 用于為待執行方案設置一個延遲
  2. 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)
    }
  }
}

為單擊事件添加延遲操作

  1. 由于單擊事件默認優先響應,所以需要為單擊事件設置延遲策略,從而給雙擊事件足夠的響應時間
$('#btn').on('click', function () {
    clickTimeout.set(function () {
        console.log('this is click')
    })
})

在響應雙擊事件時清空延遲

  1. 雙擊事件響應完畢后,清空延遲策略
$('#btn').on('dblclick', function() {
    clickTimeout.clear()

    conosle.log('this is dblckick')
})
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • ??JavaScript 與 HTML 之間的交互是通過事件實現的。 ??事件,就是文檔或瀏覽器窗口中發生的一些特...
    霜天曉閱讀 3,538評論 1 11
  • (續jQuery基礎(1)) 第5章 DOM節點的復制與替換 (1)DOM拷貝clone() 克隆節點是DOM的常...
    凜0_0閱讀 1,364評論 0 8
  • 我不知道我要去哪,但我不想停下來
    大哼閱讀 188評論 0 0
  • 家庭教育每日分享20180604 導致孩子今天各種問題的,不是孩子此時表現出的讓你憤怒的行為,而是你昨天對孩子不...
    左葉右李閱讀 180評論 0 0
  • 四人黨成員: 兵:小邵她媽, 家中還有小二一枚,心思細膩,善良賢惠,此人出門只帶現金----------懂“只帶”...
    小月半腳閱讀 635評論 0 1