0

我目前正在开发一个使用 jQuery 和 jQuery Mobile 的网站。它有一个登录对话框,其中包含一个登录按钮和一个注册按钮。

<a href="" onClick="$('#LoginDialog').dialog('close'); $.mobile.changePage('#RegisterDialog', {role:'dialog', transition:'pop'});" data-role="button" data-icon="check" data-inline="true">Register</a>

这是注册按钮的代码。我正在关闭 LoginDialog 并在“onClick”之后立即打开 RegisterDialog,但它实际上所做的是关闭 LoginDialog,然后快速显示 RegisterDialog 并将我发送回 LoginDialog。如果我添加它确实有效:

setTimeout(function() {$.mobile.changePage('#RegisterDialog', {role:'dialog', transition:'pop'});}, 100)

有没有办法在没有这个短暂延迟的情况下解决这个问题?我将非常感谢任何有用的答案,因为我一直在尝试为这个问题找到一个解决方案很长一段时间,除了在关闭和打开功能之间设置延迟之外,我想不出一种方法来解决它。 .

编辑:我想在打开注册对话框之前关闭登录对话框的原因仅仅是因为我希望用户在他或她关闭注册对话框时最终出现在主页上。因此,在登录对话框中打开第二个对话框(我也尝试过)并不能解决我的问题......

编辑:我找到了解决问题的方法。我刚刚从对话框中删除了关闭按钮,并在底部添加了一个取消按钮,这只是简单的

$.mobile.changePage('#')

这真的是我所需要的......对不起我的愚蠢问题:)

4

1 回答 1

0

您可以在 jQM中链接对话框。既然你在你的onClick处理程序中什么都不做,只是changePage为什么不以声明的方式做这一切。

<div data-role="page" data-theme="a" id="home">
    <div data-role="header" data-theme="a" align="center">
        <h1>Home</h1>
    </div>
    <div data-role="content">
        <p>You need to log in first</p>
        <a href="#LoginDialog" data-rel="dialog" data-transition="pop" 
           data-role="button" data-icon="check" data-inline="true">Login in</a>
    </div>
</div>

<div data-role="page" data-theme="d" id="LoginDialog">
    <div data-role="header" data-theme="a" align="center">
        <h1>Login</h1>
    </div>
    <div data-role="content">
        <p>Provide your login information</p>
        <a href="#RegisterDialog" data-rel="dialog" data-transition="pop" 
           data-role="button" data-icon="check" data-inline="true">Register</a>
    </div>
</div>

<div data-role="page" data-theme="e" id="RegisterDialog">
    <div data-role="header" data-theme="e" align="center">
        <h1>Register</h1>
    </div>
    <div data-role="content">
        <p>Provide your registration information</p>
        <a href="#LoginDialog" data-rel="dialog" data-transition="pop" 
           data-role="button" data-icon="check" data-inline="true">Create an account and retutn to Login</a>
    </div>
</div>

这是jsFiddle

于 2013-05-25T04:39:51.860 回答