Как открыть jQuery Mobile Dialog из javascript?
У меня есть страница диалога, и я пытаюсь открыть его и отображать результаты из AJAX POST.
Вот мое успешное событие jQuery:
success: function(resp) {
$("#dialog").dialog();
$("#text").html('SPAM and EGGS!')
}
Мой HTML имеет две страницы, второй - диалог html:
<div data-role="page" id="main">
# content
</div>
<div data-role="page" id="dialog">
<div data-role="header">
<h1>Your Message</h1>
</div>
<div data-role="content" id="text">
</div>
</div>
My AJAX POST работает, а элемент id = "текст" обновляется с помощью "SPAM и EGGS!", но диалог не появляется.
Ответы
Ответ 1
Добавьте тег <a>
в любом месте вашей страницы, просто поместите свой идентификатор диалога как href, как показано ниже:
<a id='lnkDialog' href="#dialog" data-rel="dialog" data-transition="pop" style='display:none;'></a>
И замените $("#dialog").dialog();
внутри вашего события успеха
$("#lnkDialog").click();
Ответ 2
Я думаю, что это намного более элегантно:
$.mobile.changePage('#dialog', 'pop', true, true);
вы должны иметь в своем html data-role="dialog"
вместо page
<div data-role="dialog" id="dialog">...</div>
Ответ 3
Этот ответ также работает:
$.mobile.changePage('#myPage', {transition: 'pop', role: 'dialog'});
Ответ 4
если не важно использовать "диалог" или "всплывающее окно", попробуйте следующее:
$("#dialog").popup('open');
Ответ 5
правильный вариант с последней версией запроса
$.mobile.changePage("#dialog", { transition: "pop",role: "dialog" })
Ответ 6
Начиная с JQM 1.4, changePage
устарел и будет удален в 1.5
(http://api.jquerymobile.com/jQuery.mobile.changePage/)
Они предполагают, что вместо этого следует использовать метод change()
pagecontainer
.
$.mobile.pageContainer.pagecontainer("change", "#dialog", { transition: 'pop', role: "dialog" });