0

jquery mobile 1.2を使用すると、新しいページに変更する前に応答する必要があるポップアップメニュー(OK /キャンセル)があります。ただし、クリックする前にページが変更されます(ポップアップが消えます)。

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

jQueryMobileポップアップはページの一部です。ページを変更すると、現在のポップアップがすべて閉じられるため、ポップアップを開いた後に直接呼び出すことはできません。次のコードはポップアップを開き、閉じません。

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 に答える