2012-07-20 73 views
9

隨着twitters引導我創建了一個具有無線電框行爲的按鈕組,讓用戶在不同的狀態之間進行選擇。按照假設,這可以開箱即用。Twitter Bootstrap:刪除/切換類似複選框的按鈕組的活動狀態

我安排了的jsfiddle這裏的例子:http://jsfiddle.net/jpxWj/

我想什麼(希望)是,當我點擊激活鍵第二次按下的狀態可以被刪除。

我試着用jQuerys removeClass()btn類中刪除active類,但它不起作用。 (我也試圖與.on()消除但這只是不斷活動總是隱藏/刪除)

回答

17

Here you go,相當未知事件的現象,在我看來。你可以閱讀更多關於它here

編輯:

要ellaborate,爲什麼一個簡單的.removeClass不工作的原因,是因爲有多個聽衆,聽相同的事件。因此,當click事件被觸發時,正常的.removeClass會刪除該類,但是然後Twitter Bootstrap處理程序會再次添加它!爲了防止在你之後執行任何其他處理程序,可以執行e.stopPropagation。但是,這並不能阻止處理程序與您的處理程序連接在相同的元素上,它只會停止樹上的處理程序。要完全確保在你之後沒有執行其他處理程序,可以使用event.stopImmediatePropagation()

+0

這下好了 - 非常感謝你!我曾嘗試'event.preventDefault()',但沒有奏效。 'event.stopImmediatePropagation()'按預期工作。我更新了jsFiddle以縮小範圍:http://jsfiddle.net/jpxWj/2/ 再次感謝提示和幫助! – 2012-07-20 16:09:24

+0

沒問題,我補充說明一下,認爲它可能有幫助。 – 2012-07-20 16:12:56

+0

優秀的答案,謝謝。 – kliron 2013-08-24 14:05:09

0

引導3更新:

$('body').on('click', '.btn-group .btn.active',function(e){ 
     e.preventDefault(); 
     e.stopImmediatePropagation(); 
     $(this).find('input').removeAttr('checked'); 
     $(this).removeClass('active'); 
    }); 
+0

添加'e.stopImmediatePropagation();'爲我工作。 – ryentzer 2017-02-27 16:41:53