jquery mobile popup不等待点击

时间:2013-01-14 15:02:33

标签: jquery-mobile popup

使用jquery mobile 1.2,我有一个弹出菜单(确定/取消),在更改为新页面之前应该回答。但是在点击之前页面会改变(并且弹出窗口会消失):

if (rider.time.valueOf() > 0) {
    $('#popupMsg').text("Rider has already finished; update the time?");
    $('#alreadyFinished').popup("open");
}
alert("rf");
// other code.......
$.mobile.changePage("#finishLine");
// other code.......

我进入“警报”只是为了证明弹出窗口确实出现 - 它就在警报后面,但是一旦点击警报,弹出窗口就会关闭(并且页面会发生变化)。还尝试删除“其他代码”,但仍然是同样的问题。

这是html:

    <div data-role="popup" id="alreadyFinished" class="ui-content">
         <p id="popupMsg"></p>
         <a data-role="button" data-theme="b" id="OKBtn">OK</a>
         <a href="#finishLine" data-role="button" data-theme="c"  id="cancelBtn">Cancel</a>
     </div>

即使没有弹出窗口中的按钮,弹出窗口也不会保留。那有什么不对?

1 个答案:

答案 0 :(得分:0)

jQuery Mobile弹出窗口是页面的一部分。更改页面将关闭任何当前弹出窗口,因此您不应在打开弹出窗口后直接调用它。以下代码将打开您的弹出窗口而不是关闭它。

if (rider.time.valueOf() > 0) {
    $('#popupMsg').text("Rider has already finished; update the time?");
    $('#alreadyFinished').popup("open");
} else {
    alert("rf");
    // other code.......
    $.mobile.changePage("#finishLine");
// other code.......
}

如果您希望弹出窗口是模态的,最简单的方法是将其余代码的执行绑定到弹出窗口的关闭。例如,如果您希望在弹出窗口关闭后运行restOfCode函数:

$('#alreadyFinished').popup("open");
$( "#alreadyFinished" ).on({
   popupafterclose: function(event, ui) {restOfCode()}
});