2013-07-09 20 views
5

Giriş kimlik bilgileri yanlış olduğunda kullanıcıyı uyarmak için jQuery Mobile 1.3.1'in pop-up'ını kullanmaya çalışıyorum. Jquerymobile belgelerinden temel bir şablonla başladım, ancak $('#popupBasic').popup('open'); ile çalışamıyorum.jQuery Mobile açılır penceresi açılmıyor .popup ('open')

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

Ben Tooltip linke tıklayın, iyi işlev görür. Ama benim durumumda hiç tıklama yok, ben de bunu deniyorum; varsa, yanlış herhangi bir hata yoksa retVal doğrudur yani benim ajax giriş fonksiyonu, bir geri arama yapar sonra

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

bu (ve bu noktada ben popup göstermek için çalışıyorum).

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

yüzden jquerymobile sayfası için hazır kadar beklemek de arada benim js parçasıdır. Ben masaüstü tarayıcılar

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

gibi değişiklikler bağlantı ama pop up göstermez bu olduğunu ne zaman

ne olur. Bazı yenilemeler ve önbelleklerin ardından göstermeye başlar. IOS'ta aynı şey de olur ama android üzerinde bazen değişmez, zaman değişmez.

Bu problemi çözmek için bana yardım edebilecek biri olursa gerçekten çok mutlu olurdum. Şimdiden teşekkürler.

cevap

9

Çünkü pageinit başlatıldığında, poupup henüz işleme için hazır değil. Açılır pencereyi açmak için pageshow'u kullanmanız gerekir. İşte yaptığınız şey:

  • Ajax çağrısını pageinit içinde yapın. Verileri sayfanın data özniteliğinde saklayın.
  • Ardından, pageshow olayında, veriden alıp istediğiniz şekilde işleyin, ardından açılır pencereyi açın. İşte

kod:

$(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"); 

Ve burada bir demo: http://jsfiddle.net/hungerpain/MvwBU/

İlgili konular