Я разрабатываю модальное окно, которое отображается с помощью html()
при нажатии кнопки и удалении модальности при нажатии за окном remove()
.jQuery selector возвращает пусто
Я пытаюсь сделать этот фрагмент кода многократным для нескольких модальных окон. Я объявила глобальную переменную modalWindow
, которая должна определить, щелкнули ли окно или нет.
Это мой код:
var modalContent;
var modalContainer = $("#modal-container");
var modalWindow = modalWindow;
var body = $('body');
function pandaModal() {
modalContent = "<div id='modal'><div id='window'></div></div></div>";
modalWindow = $('#window');
openModal();
}
function openModal() {
modalContainer.html(function() {
return modalContent;
});
var modal = $("#modal");
body.addClass('noscroll');
//var modalWindow = $("#window");
console.log(modalWindow, ' before click');
$(modalContainer).mouseup(function(e) {
if (e.target.id != modalWindow.attr('id') && !modalWindow.has(e.target).length) {
modal.remove();
body.removeClass('noscroll');
console.log(modalWindow, ' after click');
}
})
}
$(document).keyup(function(e) {
if (e.which == 27) {
$("#modal").remove();
body.removeClass('noscroll');
}
e.stopPropagation();
});
$("body").delegate('#counter', 'click', function() {
pandaModal();
});
Вот codepen пример вопроса: http://codepen.io/sanderfish/pen/QyzERM
Что происходит, когда var modalWindow = $("#window");
остается комментировал в openModal
, возвращает селектор пуст. Код работает при раскомментировании, но только для одного модального (в данном случае это pandaModal
).
Заранее спасибо.
Какова цель modalWindow = modalWindow? Почему modalWindow объявлен как глобальная переменная, а затем снова объявлен в функции openModal? – Roberto
Я хочу создать несколько модалов, таких как 'pandaModal', каждый из которых содержит разные' modalContent', которые возвращаются при наличии нескольких модальных окон. 'modalWindow' не должен быть объявлен снова в openModal, он только сделал это, чтобы показать, чего я хочу достичь, и показать, что происходит не так. – Sanderfish
Ваш код имеет несколько ошибок. Например, дополнительный тег div div в modalContent. Тем не менее, более серьезная проблема заключается в том, что код пытается выбрать объекты до того, как они созданы, например modalWindow = $ ('# window'), когда он появится в инструкции после этого. Я не уверен в конкретной проблеме, но я бы предположил, что это ее часть. – Roberto