2013-07-09 65 views
5

我試圖使用jQuery移動1.3.1的彈出提醒用戶何時登錄憑據都是假的。我開始與jquerymobile的文檔一個基本的模板,但我不能使它與$('#popupBasic').popup('open');工作,如果我使用這種方式;jQuery Mobile的彈出是不開放的.popup(「公開」)

 <div data-role="page"> 


     <div data-role="header" data-tap-toggle="false"> 
     </div><!-- /header --> 

     <div data-role="content"> 

      <a href="#popupBasic" data-rel="popup">Tooltip</a> 
      <div data-role="popup" id="popupBasic">I will change this text dynamically if this popup works</div> 


     </div><!-- /content --> 
    </div><!-- /page --> 

當我點擊工具提示鏈接時,效果很好。但在我的情況下,沒有任何點擊,所以我正在嘗試這個;

   if(retVal){ 
        $.mobile.changePage('index'); 
       } 
       else{      
        $('#popupBasic').popup(); 
        $('#popupBasic').popup("open"); 
       } 

這是我的Ajax登陸功能使回調之後,所以retVal的是真實的,如果如果沒有任何錯誤,虛假的(在這一點上我想顯示彈出式)。順便說我所有的JS部分是

$(document).on('pageinit', function(){}); 

,所以我等到jquerymobile準備的頁面。

當我這樣做,這是在桌面瀏覽器鏈接變化

http://localhost/login#&ui-state=dialog 

,但不顯示彈出式菜單,會發生什麼。一些刷新和緩存後,它開始顯示。在iOS上,同樣的事情也會發生,但在android上有時它會改變鏈接一段時間它不會。

我會很高興,如果有人能幫助我解決這個問題。 在此先感謝。

回答

9

這是因爲當pageinit被觸發時,poupup心不是準備好操作,只是還沒有。您需要使用pageshow才能打開彈出窗口。以下是您的操作:

  • 撥打pageinit撥打ajax電話。將數據存儲在頁面的data屬性中。
  • 然後,在pageshow事件,如果需要從數據和操作它,你想要的方式,然後打開彈出窗口。

下面的代碼:

$(document).on({ 
    "pageinit": function() { 
     alert("pageinit"); 
     //$("#popupBasic").popup('open'); will throw error here because the page is not ready yet 
     //simulate ajax call here 
     //data recieved from ajax - might be an array, anything 
     var a = Math.random(); 
     //use this to transfer data betwene events 
     $(this).data("fromAjax", a); 
    }, 
    //open popup here 
    "pageshow": function() { 
     alert("pageshow"); 
     //using stored data in popup 
     $("#popupBasic p").html("Random : " + $(this).data("fromAjax")); 
     //open popup 
     $("#popupBasic").popup('open'); 
    } 
}, "#page1"); 

下面是一個演示:http://jsfiddle.net/hungerpain/MvwBU/