2012-09-05 51 views
1

在页面ABC上,我弹出一个jQueryMobile first对话框。jquerymobile关闭对话框后打开另一个

这个对话框有一个按钮,调用第二个对话框:

<a href="/second" data-role="button" data-rel="dialog">Second dialog</a> 

我想点击该按钮,用以下成果:

  • first对话框关闭
  • second弹出对话框
  • 当我关闭second对话框时,我剩下页面ABC

但是,什么情况是这样的:

  • second对话框弹出
  • 当我关闭second对话,我留下对话框
  • 现在我必须关闭first对话框,留给first到页面ABC

jQueryMobile文档说当任何lin k在对话框中单击,框架将自动关闭对话框并转换到请求的页面,就像对话框是普通页面一样。

如何从first对话框中调用second对话框,同时关闭first对话框?

回答

0
<head> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css" /> 
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script> 
<script> 
     $(function() { 
      $("#link2").on("click", function(event, ui) { 
       $("dialog1").dialog('close'); 
      } 
     }); 
</script> 

</head> 
<body> 
    <div data-role="page" id="example"> 
      <div data-role="header"> 
      <h1>test</h1> 
      </div> 
      <div data-role="content"> 
      <a href="#dialog1" data-rel="dialog" id="link1">Open dialog1</a> 
     </div> 
    </div> 
    <div data-role="page" id="dialog1"> 
      <div data-role="header"> 
      <h1>dialog1</h1> 
      </div> 
      <div data-role="content"> 
      <a href="#dialog2" data-rel="dialog" id="link2">Open dialog2</a> 
     </div> 
    </div> 
    <div data-role="page" id="dialog2"> 
     <div data-role="header"> 
      <h1>dialog2</h1> 
     </div> 
     <div data-role="content"> 
     </div> 
    </div> 
</body> 

尝试一下代码。让我知道如果这工作或没有。

+0

不,不工作。谢谢 –

0

打开第二个弹出窗口时设置一个很短的时间间隔。

$('#Popup1').dialog('close'); 

setTimeout(function() { 
    $.mobile.changePage('#Popup2', { 
     'role': 'dialog' 
    }); 
}, 1000); 
0

这里的主要问题是“开放”和“关闭”对话框是误用。你并没有真正“打开”或“关闭”它们,而是使用浏览器历史记录“导航到”或“导航离开” - 要么将对话框添加到历史记录中,要么将其删除( “回”)。从第一个对话框导航到另一个对话框时,它会将第二个对话框推送到浏览器历史记录上,但是会使用密切的动画为第一个对话框设置动画。

一旦你了解了这一点,寻找解决方案变得非常简单,并且有几个选项可以使用。

  1. 禁用changeHash打开的对话框将阻止它们被添加到历史记录中,因此您可以打开第二个,并在关闭它时显式导航回到主页。
  2. 将链接更改为首先“关闭”第一个对话框(jQuery mobile通过历史记录返回),然后“打开”第二个对话框(即导航到新页面)。这就是你现在得到的认为的效果,因为jQM像这样做了动画,但它在底层做了一些不同的事情。
相关问题