można by wiązać się z „przypadku”, że strona jQuery komórkowy eksponuje, jak pageinit
:
$(document).delegate('#my-page', 'pageinit', function() {
//this is like document.ready for this pseudo-page
});
Ponieważ używasz jQuery Rdzeń 1.7.1 można użyć .on()
który ma nieco innej składni:
$(document).on('pageinit', '#my-page', function() {
//this is like document.ready for this pseudo-page
});
Wszystkie trzy swoimi metodami robić podobne rzeczy. .live()
to to samo, co użycie .delegate()
z document
jako selekcji root, ale zostało ono zamortyzowane, więc dobrze jest przestać go używać (źródło: http://api.jquery.com/on). Używanie wartości .bind()
bezpośrednio na elemencie document
jest takie samo jak przy użyciu .delegate()
, ale w przypadku korzystania z .bind()
trzeba określić, która pseudo strona miała zdarzenie wywołane na nim w procedurze obsługi zdarzenia, a nie w wywołaniu funkcji.
Na przykład:
$(document).bind('pageshow', function() {
var id = $.mobile.activePage[0].id;
//you can use $.mobile.activePage to do work on the current page
});
Ogólnie delegacja zdarzenie jest używany, gdy nie wiemy, gdy element będzie istnieć w DOM. Opiera się na wydarzeniach propagujących DOM, dopóki nie dojdą do wyboru roota (w twoim przypadku zawsze jest to element document
).
Docs dla .delegate()
: http://api.jquery.com/delegate
Aby uzyskać więcej ogólnych informacji na temat różnicy między tymi funkcjami, zobacz ten artykuł (czytałem go sprawdzić go pod kątem dokładności i to tuż-on): http://www.elijahmanor.com/2012/02/differences-between-jquery-bind-vs-live.html
Dzięki za zasoby. To jest świetne. Mam inne, nieco pokrewne pytanie. Załóżmy, że moja strona główna ma pokaz slajdów.Czy powinienem wywoływać kod pokazu slajdów w funkcji "pageinit" lub "pagehow"? – cusejuice
'pagehow' będzie uruchamiany po każdym kolejnym wyświetleniu strony przez użytkownika. Na przykład wystrzeliwuje się po pierwszym wyświetleniu strony głównej, ale zostanie również zwolniony po przejściu dalej i powrocie na stronę główną. Chciałbym ustawić pokaz slajdów w programie obsługi zdarzeń 'pageinit', ale następnie zatrzymać go w procedurze obsługi zdarzeń' pagehide' i uruchomić ją w procedurze obsługi zdarzeń 'pagehow'. To zadziała dla początkowego obciążenia, ponieważ zdarzenie 'pagehow' jest wywoływane po zdarzeniu' pageinit'. – Jasper
Jeśli skonfiguruję pokaz slajdów (tj. Uruchomię funkcję inicjowania pokazu slajdów) w obu programach obsługi zdarzeń 'pageinit' i' zdarzeniu 'pagehow', czy funkcja ta nie zostanie wywołana dwukrotnie? – cusejuice