se podría unirse a un "evento de página" que jQuery Mobile expone, como pageinit
:
$(document).delegate('#my-page', 'pageinit', function() {
//this is like document.ready for this pseudo-page
});
Dado que está utilizando jQuery Core 1.7.1 se puede utilizar .on()
que tiene una sintaxis ligeramente diferente:
$(document).on('pageinit', '#my-page', function() {
//this is like document.ready for this pseudo-page
});
Los tres de sus métodos de hacer cosas similares. .live()
es lo mismo que usar .delegate()
con document
como la selección de raíz, pero se ha depreciado, por lo que es una buena idea dejar de usarlo (fuente: http://api.jquery.com/on). Usar .bind()
directamente en el elemento document
es lo mismo que usar .delegate()
, pero cuando usa .bind()
debe determinar qué pseudopágina hizo que se dispare el evento en el controlador de eventos en lugar de en la llamada a la función.
Por ejemplo:
$(document).bind('pageshow', function() {
var id = $.mobile.activePage[0].id;
//you can use $.mobile.activePage to do work on the current page
});
En general, delegación de eventos se utiliza cuando no se sabe cuando un elemento existirá en el DOM. Se basa en eventos que burbujean el DOM hasta que llegan a la selección de raíz (en su caso, siempre es el elemento document
).
Docs para .delegate()
: http://api.jquery.com/delegate
Para más información general acerca de la diferencia entre estas funciones, consulte este artículo (he leído para comprobar su exactitud y está justo-a): http://www.elijahmanor.com/2012/02/differences-between-jquery-bind-vs-live.html
Gracias por los recursos. Esto es genial. Tengo otra pregunta algo relacionada. Digamos que mi página de inicio tiene una presentación de diapositivas.¿Debo llamar el código de presentación de diapositivas dentro de la función 'pageinit' o 'pageshow'? – cusejuice
'pageshow' se activará cada vez que el usuario vea la página. Por ejemplo, se disparará cuando vea la página de inicio por primera vez, pero también se activará cuando navegue y vuelva a la página de inicio. Configuraría la presentación de diapositivas en el controlador de eventos 'pageinit' pero luego lo detendré en el controlador de eventos' pagehide' y lo iniciaré en el controlador de eventos 'pageshow'. Esto funcionará para la carga inicial porque el evento 'pageshow' se dispara después del evento' pageinit'. – Jasper
Si configuro la presentación de diapositivas (es decir, ejecuto una función para iniciar la presentación de diapositivas) en TANTO el controlador de eventos 'pageinit' como' pageshow', ¿no invocaría la función dos veces? – cusejuice