如何打开从JavaScript的jQuery Mobile对话框?

我有一个对话框页面,并试图打开它,并显示来自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> 

我的AJAX POST正在工作,元素id =“text”正在更新为“SPAM和EGGS!”,但是对话框没有popup。

在页面的任意位置添加<a>标签,只需将对话框的id设置为href,如下所示: <a id='lnkDialog' href="#dialog" data-rel="dialog" data-transition="pop" style='display:none;'></a>

并replace$("#dialog").dialog();$("#lnkDialog").click();的成功事件中$("#lnkDialog").click();

我认为这个更优雅:

 $.mobile.changePage('#dialog', 'pop', true, true); 

你应该在你的HTML data-role="dialog"而不是page

 <div data-role="dialog" id="dialog">...</div> 

这个答案也适用:

  $.mobile.changePage('#myPage', {transition: 'pop', role: 'dialog'}); 

如果使用“对话框”或“popup”不重要,请尝试以下操作:

 $("#dialog").popup('open'); 

正确的方式与最新的查询版本

 $.mobile.changePage("#dialog", { transition: "pop",role: "dialog" }) 

从JQM 1.4起, changePage已被弃用,并将在1.5( http://api.jquerymobile.com/jQuery.mobile.changePage/ )中被删除。

他们build议应该使用pagecontainerchange()方法。

 $.mobile.pageContainer.pagecontainer("change", "#dialog", { transition: 'pop', role: "dialog" });