Оригинал, принятый ответ
ничего не происходит, потому что вы неправильно btnClose
в вашем ID тегов HTML (вы вызываете его btnCloset
). Тем не менее, это не сработало бы с предоставленным кодом, так как это именно то, что он делает: когда вы нажимаете на ссылку btnClose
, вы создаете простоеМодальное поле из #content
и говорите ему, что когда оно закрывается, оно должно делать вещи в опции onClose
(что является правильным). Таким образом, вы на самом деле не говорите ему, чтобы он закрывался где-то, просто говоря, что это модальный диалог.
Вместо этого вы должны создать модальный элемент #content
, как и сейчас, но делайте это отдельно от события клика . Затем вы должны связать событие click, чтобы закрыть диалоговое окно.
Вот код
$(function() {
/* Make #content a modal */
$("#content").modal(
{
onClose: function(dialog) {
dialog.data.fadeOut('slow', function() {
dialog.container.slideUp('slow', function() {
dialog.overlay.fadeOut('slow', function() {
$.modal.close(); // must call this!
});
});
});
}
}
);
/* When #btnClose is clicked, close the modal */
$('#btnClose').click(function(e) {
$.modal.close();
});
});
Как примечание стороны, если вы добавляете класс
simplemodal-close
к
#btnClose
, SimpleModal автоматически делает его закрыть диалоговое окно, и вы не должны привязать щелкните событие самостоятельно.
Новый ответ, основанный на обратной связи
Хорошо, я понял, как это аддон работает, я думал, что это было похоже на обычный диалоговое плагин JQuery, но, как я теперь понимаю, цель состоит в том, чтобы сделать существующий, видимый element a dialog и при его закрытии преобразуйте его обратно в исходную форму. Новый код отслеживает состояние диалога (сохраняя doOpen
в data
ссылки и переключая его на каждый клик), и оба открывают и закрывают диалог. Надеюсь, это ближе к тому, как вы хотели бы работать :)
$(function() {
$("#btnClose")
.data("doOpen", true)
.click(function() {
/* check whether or not we are to open or close the dialog */
var doOpen = $(this).data("doOpen");
/* toggle the data */
$(this).data("doOpen", !doOpen);
if (doOpen) {
$("#content").modal({
onClose: function(dialog) {
dialog.data.fadeOut('slow', function() {
dialog.container.slideUp('slow', function() {
dialog.overlay.fadeOut('slow', function() {
$.modal.close(); // must call this!
});
});
});
}
});
}
else {
$.modal.close();
}
});
});
Следуя вашим предоставленным кодам, работает тесное мероприятие. Однако, когда я загружаю страницу, модальный автоматически появляется. В любом случае, вы даете мне ключ. Большое спасибо. – HorseKing
И я знаю, что могу использовать «simplemodal-close», но у этого нет закрывающих анимаций. – HorseKing
Хорошо, я думаю, что неправильно понял. Отредактировал мой ответ. Надеюсь, я понял это лучше сейчас –