Jquery mobile 使用mobile.changepage的Jquerymobile对话框不';我不在第二页上工作

Jquery mobile 使用mobile.changepage的Jquerymobile对话框不';我不在第二页上工作,jquery-mobile,dialog,Jquery Mobile,Dialog,我有一个对话框(不是外部html),当我单击页面上的按钮时会显示该对话框。如果包含该对话框的html是第一个要访问的页面,则可以正常工作,但如果通过单击另一页面上的href打开该文件,则当我单击按钮时不会显示该对话框 下面是包含对话框的页面的代码。。。即使这不是要访问的第一个页面,但对话框不显示,按钮单击事件中的警报也会显示 <!DOCTYPE html> <html> <head> <title>Create Team</title>

我有一个对话框(不是外部html),当我单击页面上的按钮时会显示该对话框。如果包含该对话框的html是第一个要访问的页面,则可以正常工作,但如果通过单击另一页面上的href打开该文件,则当我单击按钮时不会显示该对话框

下面是包含对话框的页面的代码。。。即使这不是要访问的第一个页面,但对话框不显示,按钮单击事件中的警报也会显示

<!DOCTYPE html>
<html>
<head>
<title>Create Team</title>
<link rel="stylesheet"
    href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script>

</head>
<body>

    <!-- Page starts here -->
    <div data-role="page" data-theme="b" id="page1">
        <div data-role="header" id="hdrMain" name="hdrMain"
            data-nobackbtn="true">
            <h1>Test screen</h1>
        </div>
        <div data-role="content" id="contentMain" name="contentMain">
            <div id="fullnamediv" data-role="fieldcontain">
                <label for="fullname" id="fullnameLabel" name="fullnameLabel">Team
                    Name*</label> <input id="fullname" name="fullname_r" type="text" />
            </div>
            <div id="submitDiv" data-role="fieldcontain">
                <a id="buttonSave" name="buttonSave" href="#" data-role="button"
                    data-inline="true">Save</a>
            </div>
        </div>
        <!-- contentMain -->
        <div data-role="footer" id="ftrMain" name="ftrMain"></div>
        <script>
            $("#page1").bind("pagecreate", function() {
                $('#buttonSave').click(function() {
                    alert("aaaa");
                $.mobile.changePage('#successdiv', {
                    transition: 'pop',
                    reverse: false,
                    changeHash: true
                });
                    alert("after change");
                    return true;
                });
            });
        </script>

    </div>
    <!-- page1 -->

    <div data-role="dialog" data-theme="a" id="successdiv">
        <div data-role="header" data-theme="f">
            <h1>Error</h1>
        </div>
        <div data-role="content">
            <p>This is Page 2</p>
            <button type="submit" data-theme="e" name="successok"
                value="submit-value" id="successbutton">Close Dialog</button>
        </div>
    </div>
    <!-- Page ends here -->
</body>

</html>    

创建团队
测试屏幕
团队
姓名*
$(“#page1”).bind(“pagecreate”,function(){
$(“#按钮保存”)。单击(函数(){
警报(“aaaa”);
$.mobile.changePage(“#successdiv”{
过渡:“流行音乐”,
反面:错,
changeHash:true
});
警报(“变更后”);
返回true;
});
});
错误
这是第2页

关闭对话框
您使用jQuery Mobile v1.0,但同时将不正确的参数传递给
$.Mobile.changePage
,就好像它是v1.0 alpha一样。不确定它是否解决了您的问题,但值得一试:

$.mobile.changePage('#successdiv', {
    transition: 'pop',
    reverse: false,
    changeHash: true
});

当我通过hrefs从一个jquery移动页面跳转到另一个页面时,我必须将rel属性设置为external,如下所示:

<a href="page2.html" rel="external">page2</a>

dfsq是正确的,当您从另一个页面链接到此页面时,仅加载div[data role=“page”]。我建议将对话框移动到它自己的html文件中,并通过

<a href="your_dialog.htm" data-role="dialog">open dialog</a>

为了澄清,您有一个外部页面,它有一个指向#successdiv页面的链接,该页面不作为对话框打开?不,让我们假设上面的页面是secondpage.html,我有另一个页面是firstpage.html。我首先在浏览器中访问firstpage.html,它有一个指向secondpage.html的href(一个普通的href,不是对话框或任何东西)。在secondpage.html(上面的代码)中,当我单击按钮“buttonsave”时,应该会打开对话框“successdiv”。如果我直接打开secondpage.html,然后单击按钮,这个功能(对话框显示)就可以了。但是,如果打开firstpage.html,然后单击href for secondpage.html,然后单击按钮save(在secondpage.html上),则对话框不会显示。因此很清楚。您可以在secondpage.HTML中定义对话框HTML代码。当您从第一个jQuery导航到secind页面时,Mobile将从secondpage.html加载第一个页面元素(div with data role=“page”)。因此,元素
#successdiv
未加载,并且不存在于页面中。没有任何东西可以显示为对话框。哦,好吧,这是否意味着我不能将对话框的div保留在secondpage.html中,它必须位于第一页本身?如果是这样的话,那么它就有点不干净了,因为我需要将对话框的div代码保存在第一页的secondpage.html中……而所有其他页面的所有此类对话框都需要在firstpage.html中定义..@dfsq-根据您的指针,我搜索了一下,发现另一个线程建议rel=“external”在firstpage.html中的href属性指向secondpage.html,这似乎对我很有用,但我想我会错过动画和其他内容…感谢您的帮助,如果您将建议作为单独的帖子撰写,我会将其标记为已接受。感谢您指出这一点,尝试了这一点,没有运气,同样的行为,对话框不会显示。javascript控制台中没有错误,并且在chrome/firefox/android浏览器上的行为相同,如果我先访问此页面,然后单击按钮,它就可以正常工作。您是否尝试传递对象而不是字符串作为第一个参数?比如
$.mobile.changePage($('successdiv'),{…})。是的,仍然不走运,我在javascript控制台中收到错误“UncaughtTypeError:无法调用未定义的方法”\u trigger”。@saj听起来您的对象可能不存在。尝试检查$('#successdiv').length。
$.mobile.changePage('your_dialog.htm', {role: 'dialog', transition: 'pop'});