重新打开JQM对话框

时间:2013-01-02 15:23:13

标签: javascript jquery jquery-mobile

嗨,新年快乐,

有一个JQM对话框,通过AJAX调用打开这样的对话

$('#calendar-event-form-container').html(HTML).toggle();
$("#calendar-event-form-container").dialog({theme:'a'});

并以

结束
$("#calendar-event-form-container").dialog('close');
$("#calendar-event-form-container").toggle();

下次打开对话框时,它会丢失其JQM主题和位置。

有人能看到代码出错的地方吗?

提前致谢 此致 巴巴克

2 个答案:

答案 0 :(得分:1)

显示和隐藏表单作为toggle()的对话框是非标准的。 jQuery Mobile对话框旨在显示或隐藏页面<div data-role="page">容器。因此,假设它在当前页面之外,并且在显示为对话框之前将不可见。

http://jquerymobile.com/demos/1.2.0/docs/pages/dialog/index.html

“通过将data-rel="dialog"属性添加到页面锚点链接”,可以将任何页面显示为模式对话框“

答案 1 :(得分:1)

andleer是正确的,不要在jQM中使用toggle(),不需要。创建jQM对话框以用作分离页面。看一下这个例子:

<div data-role="page" id="index">
    <div data-theme="a" data-role="header">
        <h3>
            First Page
        </h3>
        <a href="#second" class="ui-btn-right">Next</a>
    </div>

    <div data-role="content">
        <a href="#" data-role="button" id="open-button">Open dialo</a>         
    </div>

    <div data-theme="a" data-role="footer" data-position="fixed">

    </div>
</div>
<!-- DIALOG BOX -->
<div data-role="page" id="dialog-box" data-theme="b">
    <div data-role="header">
        <h1>Warning</h1>
    </div>
    <div data-role="content">
        <h3 id="dialog-msg">
            Dialog test
        </h3>
        <a href="#" data-role="button" id="close-button">
            Close dialog
        </a>   
    </div>
</div>  

如果可能的话,你应该打开如下对话框:

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

如果您正在动态更改对话框内容,则必须在其上触发pagecreate才能正确重新设置:

$('#dialog-box').trigger("pagecreate");

这是一个完整的jsFiddle示例:http://jsfiddle.net/Gajotres/fXzWj/