0

使用 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>

即使弹出窗口中没有按钮,弹出窗口也不会持续存在。那么有什么问题呢?

4

1 回答 1

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()}
});
于 2013-01-14T15:27:23.030 回答