2013-01-22 28 views
13

我有一個綁定到隱藏模式對話框的動作的函數。在Twitter Bootstrap中,如何從關閉模態對話框中解除事件?

我使用的代碼與this問題的接受答案類似。

$('#myModal').on('hidden', function() { 
    // do something… 
}) 

然而,此對話框可能會重新打開進行編輯,並且,這種情況發生的時候,我不一定要運行該代碼。有沒有辦法「解除」該功能,使其在對話框關閉時不再運行?我在the documentation中沒有找到任何東西。

+0

取消綁定模態事件或模態本身內包含的事件? –

+0

解除模態事件,如果我正確理解您的問題。我想解開任何應該在'隱藏'上發生的事情。 –

回答

25

你可以這樣做,以解除綁定綁模式元素的所有事件:

取消綁定的模式所有事件:

/* First option */ 
$('#myModal').on('hidden', function (e) { 
    $(e.currentTarget).unbind(); // or $(this)   
}); 

/* Second option is to call it directly when needed */ 
$('#myModal').unbind(); 

的Bootrap模式也有特定的事件,把它捆起來,所以你也可以指定你想要解除綁定的事件。

/* Events are 'hidden', 'hide', 'show', 'shown' */ 
$('#myModal').unbind(/* specific event here */); 

如果你希望刪除綁模式的內容事件,您可以簡單地只是一句中$('#myModal').empty()的元素,並適當地解除綁定的那些元素。

+3

$('#myModal')。unbind();作品,但它有點太混亂了......它也解開了使用角落中的「X」關閉窗口的能力。 –

+1

當你提到,你想解除模態事件,我想整個模態包括它的孩子需要解綁。或者你只是需要解除「隱藏」事件?像$('#myModal')。unbind('hidden')。 –

+2

$('#myModal')。unbind('hidden')訣竅:) –

5

用途:

$('#myModal').off('hidden'); 

爲什麼不解除綁定?

從jQuery 3.0開始,.unbind()已被棄用。它自jQuery 1.7以來被.off()方法取代,所以它的使用已經不受歡迎。

來源:jQuery API