簡體   English   中英

為什么jQuery on click event會取消其回調中綁定的click事件?

[英]Why does jQuery on click event set off click events bound in its callback?

$('#dropdown').on('click', function(){
    $(document).on('click', function(){
        console.log('Document event bound and fired');
    });
})

Jsfiddle

如果瀏覽器監視元素上的mousedown並在mouseup上觸發,那么為什么綁定到document的事件以及瀏覽器開始對其上的mousedown觸發事件綁定到document呢? 奇怪的是,如果將單擊綁定中的文檔包裝在1毫秒的setTimeout ,它將完全消除這種邏輯上的謬誤。 有人可以告訴我這是怎么回事嗎?

  1. 按下元素上方的鼠標按鈕,然后將其抬起。 生成一個“單擊”事件。
  2. 瀏覽器將“點擊”傳遞給jQuery,jQuery會調用您的外部處理程序。
  3. 您的處理程序為文檔級別的“ click”事件分配了另一個處理程序,然后返回。
  4. 現在,瀏覽器將事件發送到元素的父級及其父級等,直到達到文檔級別。
  5. 現在,“ click”事件將觸發您在文檔級別建立的事件處理程序。

請注意,在第二次單擊時使用鼠標觸發時,文檔處理程序將由重復項連接,因此將有兩個控制台消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM