首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQueryMobile - SimpleDialog fullHTML rel='close‘多次后退

jQueryMobile - SimpleDialog fullHTML rel='close‘多次后退
EN

Stack Overflow用户
提问于 2012-01-31 01:51:02
回答 3查看 1.6K关注 0票数 1

我真的很纠结于下面的问题。

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

我想要创建一个全局实用函数,这样我就可以根据需要随时调用,如下所示:

代码语言:javascript
运行
复制
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');
}

我只想当用户点击Ok时,对话框页面消失并返回到前一页,即对话框的“X”按钮功能。

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

有什么建议吗?

谢谢。

EN

Stack Overflow用户

发布于 2012-09-07 07:31:52

我想我找到了rel close中的问题所在。

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

代码语言:javascript
运行
复制
if ( o.mode === 'blank' ) {
    self.pickerContent.delegate('[rel="close"]', o.clickEvent, function() {
       self.close();
           alert('1');
    });
}

如果你在移动浏览器(android 2.3.3)中设置警告,在第一次打开和关闭时,你会得到一个警告,在第二次打开和关闭时,你会得到两个警告,依此类推……

接缝是所有时间的绑定事件,永远不会解除绑定(我正在使用转换,而不是页面加载,很可能在加载时不会发生)

我不熟悉委托,我用绑定和取消绑定jquery函数重写了这段代码

代码语言:javascript
运行
复制
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"');可能会修复原始代码。

我发现更多是不同的行为,因为close中的不同的行为

在本地浏览器和手机浏览器上的行为不同,我使用的useDialog是假的,当我把它放到手机浏览器上时,我得到了对话框。这是因为

第141行- jquery.mobile.simpledialog.js

代码语言:javascript
运行
复制
if ( ( docWinWidth > 400 && !o.useDialogForceTrue ) || o.useDialogForceFalse || o.fullScreen ) { 

如果你只输入useDialog为true不起作用,如果with大于400px,那么你应该输入useDialogForceTrue = true,你将在所有浏览器中看到对话框。有一点混乱,因为有5个变量影响显示对话模式(docWinWidth,useDialogForceTrue,useDialogForceFalse,fullScreen和useDialog)。这意味着如果您在移动浏览器中使用useDialog : false将始终显示对话框( docWinWidth > 400 && !o.useDialogForceTrue )。

然后我告诉ok想好了,但现在我想在这个对话框中重新加载不同的内容,然后我会关闭它,然后用不同的内容activedialog.simpledialog(‘close’)重新打开;

第213行- jquery.mobile.simpledialog.js

代码语言:javascript
运行
复制
if ( self.options.cleanOnClose === true && self.options.useDialog === false ) {
    self.clean();
}

但是然后..。如果是对话框,则不能使用属性'cleanOnClose‘,也不能清除对话框内容

我所做的只是删除对is对话框的选中

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

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

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

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9068346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档