jQuery Mobile-自动打开对话框

jQuery Mobile-自动打开对话框,jquery,jquery-mobile,Jquery,Jquery Mobile,这应该是一个简单的问题,但似乎有一些奇怪的事情发生。我正在使用Django,希望在任何页面视图上打开jQuery mobile对话框,其中包含当前消息。关闭对话框后,窗口应返回将要查看的页面。所以真正的问题是如何打开页面加载对话框,然后显示页面 这(它的许多变体)不起作用: {% if messages %} <section class="dialog" id="messagesDialog" data-role="dialog" data-theme="a"> <heade

这应该是一个简单的问题,但似乎有一些奇怪的事情发生。我正在使用Django,希望在任何页面视图上打开jQuery mobile对话框,其中包含当前消息。关闭对话框后,窗口应返回将要查看的页面。所以真正的问题是如何打开页面加载对话框,然后显示页面

这(它的许多变体)不起作用:

{% if messages %}
<section class="dialog" id="messagesDialog" data-role="dialog" data-theme="a">
<header class="okay" data-role="header"><h1>This is a title</h1></header>
<div data-role="content">
    <ul>
        {% for message in messages %}
        <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
        {% endfor %}
    </ul>
</div> {# content #}
</section>

<script type="text/javascript">
$(document).one('pageinit', function(event) {
    $.mobile.changePage("#messagesDialog", 'pop', true, true);
});
</script>
{% endif %}
无错误,打开对话框,错误页面:

$(document).one('pagechange', function(event) {
    //$.mobile.changePage("WhatHeck?!?!");
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
$(document).one('pagechange', function(event) {
    $.mobile.changePage($("section@[data-role=page]"));
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
$(document).one('pagechange', function(event) {
    $.mobile.changePage("#Home");
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
服务器请求500错误/什么?!?!(预期),打开对话框,正确页面:

$("section@[data-role=page]").one('pagechange', function(event) {
    //$.mobile.changePage("WhatHeck?!?!");
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
$(document).one('pagechange', function(event) {
    $.mobile.changePage("WhatHeck?!?!");
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
$(document).one('pagechange', function(event) {
    $.mobile.changePage($("section@[data-role=page]",{
        changeHash : true
    }));

    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
无错误,打开对话框,错误页面:

$(document).one('pagechange', function(event) {
    //$.mobile.changePage("WhatHeck?!?!");
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
$(document).one('pagechange', function(event) {
    $.mobile.changePage($("section@[data-role=page]"));
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
$(document).one('pagechange', function(event) {
    $.mobile.changePage("#Home");
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
错误:“未捕获类型错误:无法调用未定义的方法”\u trigger“,没有对话框,正确页面:

$("section@[data-role=page]").one('pagechange', function(event) {
    //$.mobile.changePage("WhatHeck?!?!");
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
$(document).one('pagechange', function(event) {
    $.mobile.changePage("WhatHeck?!?!");
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
$(document).one('pagechange', function(event) {
    $.mobile.changePage($("section@[data-role=page]",{
        changeHash : true
    }));

    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
无错误,打开对话框,错误页面:

$(document).one('pagechange', function(event) {
    //$.mobile.changePage("WhatHeck?!?!");
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
$(document).one('pagechange', function(event) {
    $.mobile.changePage($("section@[data-role=page]"));
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
$(document).one('pagechange', function(event) {
    $.mobile.changePage("#Home");
    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
真的管用

$(document).one('pagechange', function(event) {
    $.mobile.changePage("#Home", {
        allowSamePageTransition : true
    });

    $.mobile.changePage("#messagesDialog",{
        transition : 'pop',
        reverse    : false,
        changeHash : true
    });
});
也适用于(任何页面):

因此,我的问题的解决方案就是这个问题的答案:当错误页面无法加载时,jquery移动状态会发生什么


因此,从pagechange事件处理程序内部调用changePage时,历史记录似乎尚未更新。我仍然不明白,我需要强制它重新加载当前页面,然后打开对话框。这至少是一个比期望服务器出错更好的解决方案。

看起来您正在为旧版本的jQuery Mobile使用语法(这就是为什么会出现错误)。如果您使用的jQuery Mobile早于
1.0a4.1
,则应查看此页面:

使用上面文档链接的语法,您的代码应该是这样的:

$(document).one('pageinit', function(event) {
    $.mobile.changePage($("#messagesDialog"), {
        transition : 'pop',
        reverse    : true,
        changeHash : true
    });
});

如果您使用的是jQuery Mobile
1.0a4.1
,那么升级时,它已经有一年的历史了,与最新的1.1.0版本相比,它不是特别稳定或功能丰富。

看起来您使用的是jQuery Mobile旧版本的语法(这就是为什么会出现错误的原因)。如果您使用的jQuery Mobile早于
1.0a4.1
,则应查看此页面:

使用上面文档链接的语法,您的代码应该是这样的:

$(document).one('pageinit', function(event) {
    $.mobile.changePage($("#messagesDialog"), {
        transition : 'pop',
        reverse    : true,
        changeHash : true
    });
});

如果您使用的是jQuery Mobile
1.0a4.1
,那么升级时,它已经有一年的历史了,与最新的1.1.0版本相比,它不是特别稳定或功能丰富。

我使用1.0.1并更新到1.1.0来尝试解决这个问题,但它似乎没有帮助。我将尝试使用对象语法,看看会发生什么。您使用的语法仅适用于1.0a4.1或更高版本,目前大约有一年历史。:(新语法无法解决问题。调用
$.mobile.changePage(“thisisa500error”)在更改对话框之前仍然有效。你应该注意你的控制台的错误。你几乎肯定在之前得到了一个特定的错误,你可能仍然是。它是什么,它引用的代码是什么?我编辑了这个问题来增加更多的信息,但是在最不规则的非工作情况下没有错误。t、 我使用1.0.1并更新为1.1.0来尝试解决此问题,但似乎没有帮助。我将尝试使用对象语法,看看会发生什么。您使用的语法仅适用于1.0a4.1或更高版本,目前大约有一年历史。:(新语法无法解决问题。调用
$.mobile.changePage(“thisisa500error”)在更改对话框之前仍然有效。你应该注意你的控制台的错误。你几乎肯定在之前得到了一个特定的错误,你可能仍然是。它是什么,它引用的代码是什么?我编辑了这个问题来增加更多的信息,但是在最不规则的非工作情况下没有错误。T