2017-03-09 46 views
0

我想要一個click事件添加到自舉按鈕會做一些東西,然後通過返回false刷新事件。這意味着我不希望自動發生的引導效應完全發生。我將根據一些條件,在點擊事件中以編程方式控制此內容。這意味着我需要在完成它之後刷新事件,以便在點擊時發生的引導程序崩潰永遠不會發生。爲什麼。點擊()和(「點擊」)上的引導摺疊按鈕表現不同?

我的問題是以下。如果我使用$(「my-button」),請單擊(...);這會在崩潰崩潰之前捕捉到事件,並且在完成我想要的事情後,我可以沖洗事件。

不過,我需要使用的( 「點擊」,...);因爲我需要這個事件發生與dinamically添加按鈕。

我的問題是,在( 「點擊」,...);不會像.click(...)那樣工作,當它捕捉到事件時,隱藏的div已經崩潰了,而我不想要。

我做了一個簡單的例子來說明我的問題:https://jsfiddle.net/vo1npqdx/368/

$(document).ready(function() { 
    $("#collapse-button").click(function() {    
    debugger; 
    //Do my stuff 
    return false; // successfully prevents bootstrap animation. 
    }); 

    $(document).on("click", "#collapse-button", function() { 
    debugger; 
    //Do my stuff 
    return false; // doesn't prevent animation 
    }); 
    // These catch the click event at different times! 
}); 

有沒有可能的解決方法來解決這種情況?

+7

的差異是因爲後者是一個委託的事件處理程序,這意味着該事件具有冒泡的DOM到'document'它處理之前。因此Bootstrap已經在事件到達時處理了事件。如果你需要使用一個委託處理程序有這個 –

+1

周圍也沒有路正如羅裏說,被觸發的文檔你的第二個事件。如果你想要相同的行爲,它應該是$('#collapse-button「)。on(」click「,...)。 – Zetura

回答

1

嗯,你很幸運,因爲它看起來像bootstrap使用文檔來捕捉事件,這意味着你可以在它之前捕捉它,例如使用body元素,但最好將它靠近元素事件被觸發,例如。在一個不會改變的包裝上。

$("#wrapperthatwontchange").on("click", "#collapse-button", function() { 
    return false; 
    }); 

https://jsfiddle.net/Lbqpr7pm/

+0

非常感謝,完美的工作:) –

+1

不客氣。 ,我忘了調整你的評論在分叉小提琴;) – yezzz