2013-08-25 16 views
6

Sto usando jQuery mobile 1.9.1 min su PhoneGap.
Ho una lista in cui ogni iten al clic si apre un popup azioni:jQuery mobile popup aperta da popup

function showActions(index){ 
    selectedIndex = index; 
    $("#actionPopup").popup("open", {positionTo: '#list li:nth-child('+ index +')'}); 
} 
<div data-role="popup" id="actionPopup" data-overlay-theme="a"> 
    <a href="#" data-rel="back" data-role="button" data-theme="a" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Close</a> 
     <ul data-role="listview"> 
       <li data-role="divider">Actions</li> 
       <li data-icon="false" onclick="showDetails();">action1</li> 
       <li data-icon="false">action2</li> 
       <li data-icon="false">action3</li> 
       <li data-icon="false">action4</li> 
      </ul> 
     </div> 

Quando premo l'action1 con showDetails() loro metodo viene chiamato, ma la seconda comparsa non viene visualizzato.

function showDetails(){ 
    console.log("showDetails"); 
    $("#infoPopup").popup("open"); 
} 
<div data-role="popup" id="infoPopup"> 
      <a href="#" data-rel="back" data-role="button" data-theme="a" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Close</a> 
      <div id="infoContent"> 
       <table> 
        <tr id="eventcode"> 
         <td>test1:</td> 
         <td>&nbsp;</td> 
        </tr> 
        <tr id="eventtype"> 
         <td>test2:</td> 
         <td>&nbsp;</td> 
        </tr> 
       </table> 
      </div> 
     </div> 

Che cosa posso fare?

risposta

10

La mia soluzione

$.mobile.switchPopup = function(sourceElement, destinationElement, onswitched) { 
    var afterClose = function() { 
     destinationElement.popup("open"); 
     sourceElement.off("popupafterclose", afterClose); 

     if (onswitched && typeof onswitched === "function"){ 
      onswitched(); 
     } 
    }; 

    sourceElement.on("popupafterclose", afterClose); 
    sourceElement.popup("close"); 
}; 
1

Sembra che concatenare i popup non sia possible.

La soluzione:

$(document).on("pageinit", function() { 
    $('.popupParent').on({ 
     popupafterclose: function() { 
      setTimeout(function(){ $('.popupChild').popup('open') }, 100); 
     } 
    }); 
}); 
1

Ho usato questo codice per passare da popup popup funziona benissimo.

function switchpop() 
{ 
    $('#popupMenu').popup('close'); 
    $("#popupMenu").bind({popupafterclose: function(event, ui) 
      { 
       $("#notes").popup("open"); 
      } 
      });     
} 
3

Ho usato questa semplice funzione per i work-around:

function myPopup(myPage) { 
    history.back(); 
    setTimeout(function() { 
     $(myPage).popup('open'); 
    }, 100); 
} 
0

dopo quattro ore di lotta con questo ho ridotto il problema a questo:

Questo è in una funzione di pulsante di scatto sul primo popup

$('#popupCall').popup('close'); 

    window.setTimeout(function() { $('#popupContact').popup('open') }, 50); 
3

@Rakoo ha una bella risposta. Ecco una versione più snella:

$.mobile.switchPopup = function(sourceElement, destinationElement, onswitched) { 
    sourceElement.one("popupafterclose", function() { 
     destinationElement.popup("open") 
     !onswitched || typeof onswitched !== "function" || onswitched() 
    }).popup("close") 
}; 

Se non è necessario la funzione onswitched e non si aggiunge a $ .mobile, può essere questa breve e semplice:

$('#popup1').one("popupafterclose", function(){$('#popup2').popup("open")}).popup("close") 
Problemi correlati