2017-03-09 69 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