2014-06-27 127 views
0

我想關閉模式中的所有彈出窗口,以便在我重新打開模式時不顯示它們。如何關閉模式關閉popovers?

問題是,如果我嘗試關閉$("#modal").on("hidden", function() { [...] });,目標已經不可用。如果我在.on("shown", ...處做同樣的事情。

我不能刪除使用:

$(".buttonPopover").popover("hide"); 

因爲.buttonPopover是永遠可用的時候我要刪除popovers。如何在不訪問父母的情況下關閉它們?

Bootply

+0

它brokes我的情態。 ^^另外,我嘗試了'$(「。popover」)。popover(「hide」);'它不起作用,因爲選擇器應該是目標/父級,而不是popover元素。 – Elfayer

+0

對不起,在同胞模式? :$('#modal *')。popover('hide');我認爲你應該創建一個bootply來給答覆者一個工作...... – pbenard

+0

儘管它不起作用,但不會破壞模態。我認爲'.popover()'需要目標/父級選擇器,當它關閉/重新打開時,它不再處於模式中。 – Elfayer

回答

1

The problem is that if I try to close at .on("hidden") , the targets are already unavailable

這是因爲hidden.bs.modal事件觸發:

"when the modal has finished being hidden from the user (will wait for CSS transitions to complete)."

相反,使用hide.bs.modal事件,其中:

" is fired immediately when the hide instance method has been called"

像這樣:

$('.modal').on('hide.bs.modal', function() { 
    $("#openPopover").popover("hide") 
}); 

Demo in Bootply


更新

我很好奇,如果你hidden事件甚至被擺在首位射擊。該事件名稱命名空間,所以你必須把它稱爲hidden.bs.modal

這將永遠不會叫:

$('.modal').on('hidden', function() { 
    alert('hi'); 
}); 

這應該工作:

$('.modal').on('hidden.bs.modal', function() { 
    $("#openPopover").popover("hide") 
}); 
+0

我必須承認在我給它的工作情況。但在我的情況下,它給了我一個無限循環,並在完成500+調用此事件後完成:未捕獲的RangeError:超出最大調用堆棧大小。 (在控制檯上) – Elfayer

+0

那麼,爲了能夠確定問題所在,我們必須瞭解更多關於您的特定代碼的信息。看看你是否可以在Bootply中重現它,然後在這裏添加它,或者標記完整並用更多細節開始一個新問題。 – KyleMit