2013-09-25 104 views
1

我正在尝试使用jQuery Mobile显示对话框。的代码如下

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

我也有以下代码来生成对话框动态

$('#myDiv').on('pageshow', function(){ 
    // do custom operation 
}); 

它在Fireforx和IE可以正常使用的内容。但在Chrome和Safari中,出现的对话框会在几秒钟内消失。

我一直在这一天砸我的头已经有一天了。任何帮助深表感谢。

在此先感谢

编辑:我认为这将是巨大的,如果我的状态DOM结构。所以在这里我去...

<html> 
<head>...</head> 
<body> 
<div data-role="page" id="startPage"> 
    ... 
    <script> 
    $('#startPage').on('pageinit', function(){ 
    // Do some stuff 
    if(condition){ 
    setTimeout(function(){ 
     $.mobile.changePage('#myDiv', {transition: 'pop', role: 'dialog'}); 
    }, 100); 
    } 
    }); 
    </script> 
</div> 
<div data-role="dialog" id="myDiv"> 
    ... 
    <script> 
    $('#myDiv').on('pageshow', function(){ 
    // do custom operation 
    }); 
    </script> 
</div> 
</body> 
</html> 
+0

它是否正在填充changehash,根据文档,你有''#myDiv''应该是页面的路径。 – Jai

+0

你是否将对话框div放在页面div的外面,使div的父节点''? – Omar

+0

@Jai,我想我的问题很困惑,没有DOM的快照。所以我修改了我的问题。 Thanx – mahfuz01

回答

0

尝试拉动所有脚本的页面的DIV之外,并把它的结束标记之前。这是一个fiddle。这在Chrome和Safari中适用于我。

<div data-role="page" id="startPage"> 
    <div data-role="header"><h1>Page</h1></div> 
</div> 

<div data-role="dialog" id="myDiv"> 
    <div data-role="header"><h1>Dialog</h1></div> 
    <div data-role="content"> 
    <span id="dynamicContent"></span> 
    </div> 
</div> 

<script> 
var condition = true; 
$('#startPage').on('pageinit', function(){ 
    if(condition){ 
    setTimeout(function(){ 
    $.mobile.changePage('#myDiv', {transition: 'pop', role: 'dialog'}); 
    }, 100); 
    } 
}); 

$('#myDiv').on('pageshow', function(){ 
    $('#dynamicContent').html('Here is some dynamic content!'); 
}); 
</script> 
相关问题