В Twitter Bootstrap, как мне отвязать событие от закрытия модального диалога?

У меня есть функция, связанная с действием сокрытия модального диалога.

Я использую код, похожий на принятый ответ на этот вопрос.

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

Однако это диалоговое окно может быть вновь открыта для редактирования, и, когда это произойдет, я не обязательно хочу запускать этот код. Есть ли способ "развязать" функцию так, чтобы она больше не запускалась, когда диалог закрывается? Я ничего не нашел в документации.

Ответ 1

Вы можете сделать что-то вроде развязывания всех событий, связанных с модальным элементом:

Отменить все события в модальном режиме:

/* 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() и соответствующим образом отвязать эти элементы.

Ответ 2

Использование:

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

Почему бы не развязать?

Как и в jQuery 3.0,.unbind() устарел. Он был заменен методом .off() с jQuery 1.7, поэтому его использование уже было обескуражено.

Источник: jQuery API.