2012-01-09 19 views
14

Mogę tylko powiązać pagebeforechange z całym dokumentem mobilnym jquery, a nie z pojedynczą stroną. Czy ktoś może wyjaśnić, dlaczego this nie działa?jQuery Mobile - nie można powiązać pagebeforechange z identyfikatorem strony?

+0

Nie uruchamia się, ponieważ strona nie ładuje się ponownie ani nie zmienia. Spójrz na [docs] (http://jquerymobile.com/test/docs/pages/page-dynamic.html). – Blender

+0

+1 za używanie jsfiddle! – Rebecca

+0

Mam ten sam problem - "pagebeforechange" nie działa, gdy jest powiązany bezpośrednio ze stroną, podczas gdy "pagebeforeshow" i "pagebeforecreate" działają poprawnie. –

Odpowiedz

-1

Mam dokładnie ten sam problem, ale przynajmniej mam dla ciebie rozwiązanie. Ostrzeżenie: to jest głupi, okropny kod. Ale wykonuje to zadanie.

window.doubleLoadPreventer = 0; 

$(document).bind('pagebeforechange', function(e, data){ 

    if (window.doubleLoadPreventer === 1) { 
     window.doubleLoadPreventer = 0; 
     return; 
    } else { 
     window.doubleLoadPreventer = 1; 
    } 

    //your normal event handler code here 
} 
+1

Nie strzela wcale, ale nie dwa razy. –

1

z jQuery Mobile - Jestem całkiem pewny, że nie wiążą się z dokumentem, ale do nieruchomości pageinit.

Powiązanie z dokumentem spowodowałoby problemy ... pamiętaj, aby ten link działał ponownie w #home, będziesz potrzebował innego detektora zdarzeń dla beforepageshow lub tego, co przed powrotem do tej strony.

This doc jest bardzo pomocny ...

1

Selector stron JQM:

$('.ui-page') 

Dodanie detektora zdarzeń do wszystkich stron w dokumencie mogą być wykonane jako:

$(document).delegate(".ui-page","pagebeforehide", function(evt, ui){ 
    alert('pagebeforehide fired'); 
} 

Fiddle using delegate:

Notatka przy użyciu bind zamiast delegat NIE będzie działać dla wyżej wymienionego selektora, ponieważ klasa stronicowania jest dodawana tylko podczas tworzenia strony.

In-Aby korzystać wiążą, należy użyć następującego selektora:

$("div[data-role='page']") 

i dodać detektor zdarzeń przy użyciu (tylko po dokument jest gotowy lub organ załadowany):

$("div[data-role='page']").bind("pagebeforehide", function(evt, ui{ 
alert('pagebeforehide fired'); 
} 

Fiddle using bind:

Polecam również używanie mo Wydarzenie bileinit raczej gotowy dokument!

+0

Od wersji jQuery Mobile 1.1.0 rozwiązanie z bindem działa na "pagebeforeshow", ale nie na "pagebeforechange". Nie rozumiem tego. –

+0

proszę podać kod tego, co próbujesz zrobić, –

+0

-1. Przeczytaj uważnie pytanie - Pytano o zdarzenie "pagebeforechange", a nie "pagebeforehide". Żadne z twoich przykładów nie działa z "pagebeforechange". –

2
$("div[data-role='page']").live("pagebeforehide", function(event) { 
alert('This alert should trigger before Next Page Here is shown?'); 
}); 

(sprawdź link szczegóły) można również użyć zamiast wiążą żywo, Mam nadzieję, że pomogło.

Powiązane problemy