2011-10-02 23 views
9

Fondamentalmente ho bisogno di una funzione personalizzata da utilizzare solo quando, ad esempio, si fa clic sulla pagina #recensioni dalla home page.jQuery Mobile: Ottenere l'ID della pagina precedente

Ecco il codice corrente che sto usando:

$(document).bind("mobileinit", function(){ 
    $('#reviews').live('pagebeforeshow',function(event){ 
    var cpage = $.mobile.activePage.attr('id'); 
     if (cpage == 'home') { 
      addPages(); 
     } 
    }); 
}); 

Il problema è, anche se sta usando 'pagebeforeshow' si sta usando l'id della pagina si è in procinto di passare al come pagina attiva , in questo caso "recensioni" anziché a casa, causando così il fallimento dell'istruzione if.

Quindi la mia domanda è, in questo esempio, come potrei ottenere l'id della pagina precedente, per essere sicuro che provenga effettivamente dalla #home page?

risposta

23

Per completare la risposta: si otterrà un oggetto jQuery indietro, in modo da ottenere l'ID della pagina farlo:

$("#page-id").live('pagebeforeshow', function(event, data) { 
    console.log("the previous page was: " + data.prevPage.attr('id')); 
}); 

data.prevPage è sempre la pagina precedente come oggetto jQuery,

.attr ('id') riceve l'id da quell'oggetto jQuery.

+0

Solo una FYI per gli altri, l'evento 'pagebeforeshow' è ora deprecato e verrà rimosso a breve. Vedi questa pagina per la sua sostituzione: https://api.jquerymobile.com/pagebeforeshow/ –

6

pagebeforeshow il gestore di eventi riceve effettivamente 2 parametri: evento e ui. Puoi accedere alla pagina precedente dall'interfaccia utente. Questo è un esempio da jquery-mobile event docs:

$('div').live('pageshow', function(event, ui){ 
    alert('This page was just hidden: '+ ui.prevPage); 
}); 

Quei parametri sono gli stessi per tutti i 4 pagina mostra/nascondi eventi.

+0

Grazie, questo ha risposto alla mia domanda – tblakey89

+0

Grande. Dovresti contrassegnarlo come accettato. – mkriheli

Problemi correlati