jQueryMobile - SimpleDialog fullHTML rel ='close'向后移动很多次

时间:2012-01-30 17:51:02

标签: jquery-plugins jquery-mobile

我真的在努力解决以下问题。

我正在使用jQueryMobile - 找到here的SimpleDialog插件:

我想创建一个全局效用函数,以便我可以像我一样经常调用这样的函数:

function popAlert(title, msg) {
    $(this).simpledialog({
       'mode' : 'blank',
       'prompt' : title,
       'cleanOnClose' : true,
       'useModal':true,
       'fullHTML': msg + '<a rel="close" data-role="button" data-theme="c">Ok</a>'
        })
     $(this).simpledialog('refresh');
}

我只想在用户点击确定时对话框页面消失并返回上一页,即对话框的“X”按钮功能。

但是,每次调用对话框时,它都会向堆栈添加后退。也就是说,如果它被调用了两次,当用户点击Ok时,移动应用程序将移动到上一页和之前的那个...两个后退。

有什么建议吗?

感谢。

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。修复 - 而不是使用rel='close'我使用

onclick="$('#simpledialog').simpledialog('close');"

答案 1 :(得分:0)

这个明显的答案没有在电话上工作。我尝试了另一件事,但只是如果你有模态窗口,如果你没有固定的页脚菜单(因为在Android 2.3上没有任何更多修复菜单),它正在工作。

$('.ui-simpledialog-screen').click();

只需点击一个窗口即可。

答案 2 :(得分:0)

我想我发现rel关闭的问题在哪里。

在文件jquery.mobile.simpledialog.js(第129行)

if ( o.mode === 'blank' ) {
    self.pickerContent.delegate('[rel="close"]', o.clickEvent, function() {
       self.close();
           alert('1');
    });
}

如果您在第一次打开和关闭时发出警报并在移动浏览器(Android 2.3.3)中尝试它将获得一个警报,在打开和关闭时您将获得两个警报等等...

接缝是所有时间绑定事件并且从不解除绑定(我可能不会在加载时使用转换而不加载页面)

我不熟悉委托,我用bind和unbind jquery函数重写了这段代码

if ( o.mode === 'blank' ) {
      self.pickerContent.find('[rel="close"]').bind('click',function() {
         self.close();
         self.pickerContent.find('[rel="close"]').unbind();
      });   
      /*
      self.pickerContent.delegate('[rel="close"]', o.clickEvent, function() {
         self.close();
      });*/
}

我在移动浏览器上测试过,现在正在运行。

可能是self.pickerContent.undelegate('[rel =“close”]');将修复原始代码。

我发现的更多是不同的行为,因为关闭时的不同行为

在localy和移动浏览器中的不同行为,我使用useDialog是假的,当我把它放在移动浏览器中时,我得到了对话框。这是因为 的

第141行 - jquery.mobile.simpledialog.js

if ( ( docWinWidth > 400 && !o.useDialogForceTrue ) || o.useDialogForceFalse || o.fullScreen ) { 

如果你只是使用useDialog是真的不起作用,如果有更大的400px然后你应该把useDialogForceTrue = true,你将在所有浏览器中获得对话框。有点令人困惑因为有5个变量影响显示对话框模式(docWinWidth,useDialogForceTrue,useDialogForceFalse,fullScreen和useDialog)。这意味着如果您在移动浏览器中使用useDialog:false将始终显示对话框(docWinWidth&gt; 400&amp;&amp;!o.useDialogForceTrue)。

然后我说好了想但现在我想在这个对话框中重新加载不同的内容然后我将关闭它并重新打开不同的内容activedialog.simpledialog('close');

第213行 - jquery.mobile.simpledialog.js

if ( self.options.cleanOnClose === true && self.options.useDialog === false ) {
    self.clean();
}

但是嗯...如果是对话框你不能使用属性'cleanOnClose'你就无法清理对话框的内容

我所做的只是删除检查对话框

if(self.options.cleanOnClose === true){

现在我正在重复使用对话框来显示不同的内容

建议使用simpledialog2这个版本解决了很多问题!