2011-10-02 23 views
9

Básicamente necesito una función personalizada para ser utilizada solo cuando, por ejemplo, se hace clic en la página #reviews desde la página de inicio.jQuery Mobile: Obteniendo ID de la página anterior

Aquí está el código actual que estoy usando:

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

El problema es, a pesar de que está utilizando 'pagebeforeshow' que está utilizando el ID de la página que está a punto de transición a que la página activa , en este caso 'revisiones' en lugar de inicio, lo que hace que la instrucción if falle.

Así que mi pregunta es, en este ejemplo, ¿cómo obtendría el id de la página anterior, para asegurarme de que proviene de la página #home?

Respuesta

23

Para completar la respuesta: obtendrá un objeto jQuery atrás, así que para obtener el ID de la página de hacer esto:

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

data.prevPage está recibiendo la página anterior como objeto jQuery,

.attr ('id') está obteniendo la identificación de ese objeto jQuery.

+0

Solo un FYI para otros, el evento 'pagebeforeshow' ahora está en desuso y se eliminará en breve. Consulte esta página para obtener su reemplazo: https://api.jquerymobile.com/pagebeforeshow/ –

6

pagebeforeshow controlador de eventos en realidad obtiene 2 params: evento y ui. Puede acceder a la página anterior desde la interfaz de usuario. Este es un ejemplo de jquery-mobile event docs:

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

Esos parametros son los mismos para todos los eventos mostrar/ocultar las 4 páginas.

+0

Gracias, esto respondió mi pregunta – tblakey89

+0

Genial. Debe marcarlo como aceptado. – mkriheli

Cuestiones relacionadas