2014-03-30 52 views
0

我正在寫一個jQuery插件,要求用戶點擊兩次以執行正常的點擊處理程序。插件位於:https://github.com/aduyng/bootstrap-confirm-button。我做的是,當在一個按鈕上調用bootstrapConfirmButton()時,我刪除所有的單擊事件處理程序,附加我的事件處理程序,並最終在第二次單擊時調用所有原始的單擊事件處理程序。到目前爲止,它工作正常,做這項工作。但是,如果您在bootstrapConfirmButton()之後註冊另一個單擊事件處理程序,它仍會在第一次單擊時調用。jQuery事件排序

如何解決此問題或者如果您有解決方案,可以請叉存儲庫並修復它?

回答

1

而不是stopPropagation,我使用stopImmediatePropagation,我在附近的條件內移動呼叫,以允許點擊第二次傳播。那是你之後的行爲嗎?

$this.bind('click', function (event) { 
    // Old stuff: 
    //event.preventDefault(); 
    //event.stopPropagation(); 

    var settings = $(event.currentTarget).data('settings'); 
    if (!$this.hasClass(settings.class)) { 
     set($this); 

     // New stuff: 
     event.preventDefault(); 
     event.stopImmediatePropagation(); 

     return; 
    } 
    settings.sure(event, $this); 
}); 
+0

你說得對。我對事件處理程序的順序感到困惑。你的解決方案應該是有效的。 –