2013-07-25 22 views
8

Mam przycisk mobilny jQuery podłączony do ajax POST. Jeśli PO się nie powiedzie, przycisk mobile jQuery pozostaje wciśnięty zamiast `` pojawiały się”. Jakieś pomysły?Przycisk jQuery mobile pozostaje wciśnięty

+2

Czy możesz pokazać kod? Funkcja nazwana naciśnięciem przycisku mogłaby być pomocna. –

+0

Możliwe, że masz "wciśniętą" klasę CSS, która nie jest usuwana? – Deborah

+0

Możliwy duplikat [Jak usunąć aktywny stan przycisku z jQuery Mobile?] (Http://stackoverflow.com/questions/7507099/how-do-you-remove-a-buttons-active-state-w--ququers -mobile) – Flimzy

Odpowiedz

7

To może być łatwo zrobić

tu jsFiddle przykład wykonana z jednego z moich poprzednich odpowiedzi. http://jsfiddle.net/3PhKZ/7/

Jeśli spojrzeć tam ta linia kodu:

$.mobile.activePage.find('.ui-btn-active').removeClass('ui-btn-active ui-focus'); 

Spróbuje znaleźć wciśnięty przycisk na aktualnej aktywnej stronie, jeśli się uda, usunie 2 klasy odpowiedzialne za naciśnięcie przycisku. Niestety, czyste rozwiązanie CSS jest tutaj niemożliwe. Możesz przetestować ten przykład, po prostu skomentuj górną linię i zobacz, co się stanie.

Ostatnia selektor $ .mobile.activePage może być używany tylko podczas zdarzenia pagebeforeshow, pagehow, pagebeforechange, pagechange, pagebeforehide i pagehide, więc bierze to pod uwagę.

W przypadku nie można użyć tego przełącznika po prostu zastąpić go id stronie, podobnie jak to:

$('#pageID').find('.ui-btn-active').removeClass('ui-btn-active ui-focus'); 

Więc twój ostateczny kod będzie wyglądać następująco:

$.ajax("example.php") 
.success(function() { doStuff(); }) 
.error(function() { 
    $('#pageID').find('.ui-btn-active').removeClass('ui-btn-active ui-focus'); 
}) 
+0

Dzięki! Coś takiego jest prostsze i wydaje się działać: 'Next page' '$ ('# foobar'). RemoveClass ('ui-btn-active ui-focus');" Czy to nie wystarczy? – jaynp

+0

hmmm ale nie działa z: '' – jaynp

+0

Ani z '' – jaynp

0

Dodaj klauzulę o błędzie do obsługi AJAX, która pojawia się przycisk z powrotem.

$.ajax("example.php") 
.success(function() { doStuff(); }) 
.error(function() { /*code to unpress button here*/ }) 
+0

Mam taką klauzulę. Interesuje mnie kod, aby odłączyć przycisk. – jaynp

+0

Powinieneś opublikować swój kod w pytaniu, abyśmy mogli zobaczyć, jak zaimplementowałeś swój przycisk. –

0

dla tych ludzi tam używając "input", a nie "anchors" jako przycisków. Używając na przykład przycisków "wyślij" i "zresetuj" i naciskając je pozostaną one aktywne, co czasami jest niepożądane w zależności od czynności wykonanych po kliknięciu przycisków.

Nie jestem pewien, czy jest to oczekiwane zachowanie, czytałem że jest jQuery mobile bug, ale zachowanie jest nadal obecny przynajmniej w jQM 1.3.2

tak Sztuką jest, aby usunąć active class jak podano, ale te stają się trudne, ponieważ klasa nie jest dodana do znacznika wejściowego, i * t jest dodany do rodzica DIV *, który jest tworzony przez wszystkie brzydkie rzeczy wokół "wejścia" do styl przycisku, dlatego usunięcie klasy aktywnej przy wyborze wejścia nie działa.

Analizując HTML produkowanego przez jquery komórkowego obejście jest:

usunąć aktywną klasę na rodzica wejściowego zamiast rzeczywistego elementu wejściowego.

$ ('. Mybutton_class_or_ID'). Parent(). RemoveClass ("ui-btn-active");

Preferuję to podejście, zamiast wyczyścić wszystkie aktywne klasy na całej stronie, na wypadek, gdybyś chciał być bardziej selektywny przy usuwaniu klasy.

+0

nie działa w ogóle – marcel