2013-12-02 2 views
12

Я использую модальный диалог с удаленным параметром:самозагрузки, модальные диалоговые окна, shown.bs.modal событие не срабатывает

<a target="profile-banner" data-target="#edit-slide-dlg" href="/Banner/SlideEditModal/1/1" 
data-toggle="modal" class="banner-slide-control">Edit</a> 

Где:

<div id="edit-slide-dlg" class="modal fade" tabindex="-1"></div> 

Кроме того, я слушаю для shown.bs.modal события, где я использую event.target свойство:

$("body").on("shown.bs.modal", function (event) { 
    // do something with event.target 
} 

Некоторые причины это событие не срабатывает, когда я открываю диалог впервые. И его увольняют во второй раз. Я попытался просмотреть начальные загрузку скриптов и нашел этот код (см моего комментария):

var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) 
transition ? 
that.$element.find('.modal-dialog') // wait for modal to slide in 
    .one($.support.transition.end, function() { 
     that.$element.focus().trigger(e) //THIS LINE NEVER EXECUTED AT FIRST DIALOG OPENING 
    }) 
    .emulateTransitionEnd(300) : 
that.$element.focus().trigger(e) 

Итак, я выключил переход в качестве обходного пути, он сделал событие уволит в первый раз, но, event.target пустая строка. Во второй раз event.target содержит соответствующий диалог HTML. Это проблема с моим кодом или бутстрапом?

+1

Голосование закрыть: Bootstrap изменилось много вещей между версиями 2 и 3. Пожалуйста, прочтите [Переход от 2.x до 3.0] (http://getbootstrap.com/getting-started/# миграционные заметки), а также новую документацию для [Модалей] (http://getbootstrap.com/javascript/#modals) – Phil

+2

Мой вопрос относится к версии 3 (на самом деле я никогда не использовал версию 2). Опять же, это отставание происходит только тогда, когда используется дистанционный параметр. Я думаю, есть некоторая проблема с временем. Я попытаюсь ввести модальные диалоги через _JavaScript_ вместо _Attributes_. Возможно, я сам загружу контент модального диалога. Не хочу отказываться от модальности бутстрапа :). – Tenek

+0

Вы используете разметку v2. Где ваш класс «modal-diag»? – Phil

ответ

5

У меня была такая же проблема. Я мог бы исправить это решением этого вопроса StackOverflow: Bootstrap modal 'loaded' event on remote fragment

В принципе, вам нужно открыть модально вручную и реализовать загрузку Ajax самостоятельно. Что-то вроде:

$modal.modal({ 
    'show': true 
}).load('/Banner/SlideEditModal/1/1', function (e) { 
    // this is executed when the content has loaded. 
}); 
+7

Что происходит с событием, которое срабатывает при закрытии этого модала? – Clayton

+0

Что касается мероприятия, посмотрите здесь, чтобы получить лучший ответ: http://stackoverflow.com/questions/19279629/bootstrap-jquery-show-bs-modal-event-wont-fire – Karussell

+0

Привет, Антон. Я верю, что этот ответ поможет мне в моей проблеме: https://stackoverflow.com/questions/47609994/jquery-executes-properly-after-second-call У меня есть сомнения в том, как динамически отправлять href в jQuery: load ('/ Banner/SlideEditModal/1/1' Поскольку есть несколько кнопок, которые требуют модального просмотра, я буду исследовать, но хотел бы поблагодарить вас за эту подсказку. –

Смежные вопросы