2012-07-30 6 views
0

EDIT: Pour clarifier, je souhaite que le bouton # capture-photo soit actif, mais je souhaite le réinitialiser lorsque je navigue vers une autre page par programmation.Prévention du comportement par défaut du bouton mobile jQuery

Je suis en train de construire une application Phonegap/Cordova en utilisant jQuery comme framework. La plupart vont bien - sauf un scénario.

J'ai un pied de page fixe (fonctionne très bien) avec barre de navigation et trois boutons.

Deux boutons vont à des pages ordinaires sans ajax et ils fonctionnent très bien.

Un bouton accroche l'interface de l'appareil photo et déclenche l'appareil photo sur l'iPhone (c'est-à-dire l'iPhone). Si j'annule, je reviens à l'écran mais le bouton de la caméra a maintenant un état et un style actifs.

Je déclenche un changement de page en cas d'échec et l'activation de la page est activée, mais cela ne change pas l'état du bouton! J'ai essayé de supprimer manuellement les classes sans succès !? Quelque chose semble retarder l'ajout de classes pour l'état actif jusqu'à ou quelque chose.

Est-ce que je fais mal? Ne devrait pas le changePage() trouver et déclencher son ancrage?

Dans la page de l'album le pied de page ressemble à ceci:

<div class="footer" data-role="footer" data-position="fixed" data-id="footer-tab"> 
    <div data-role="navbar" class="nav-glyphish"> 
    <ul> 
     <li><a id="welcome" href="#welcome"></a></li> 
     <li><a id="capture-photo"></a></li> 
     <li><a id="show-album" href="#album" class="ui-btn-active ui-state-persist"></a></li> 
    </ul> 
    </div> 
    </div> 

Encore une fois - le bouton # capture photo ne pas une page correspondante, mais quand je clique qu'elle est activée, si j'annule la caméra - jqm attrape un changement de page et va à l'album # show, mais le bouton # capture-photo est toujours marqué comme actif. P. J'ai un pied de page identique (data-role = 'footer') sur les deux pages sauf que leur ancre respective a l'ensemble ui-btn-active et ui-state-persist. Je me sens un peu mal à l'aise avec ce code en double, mais il semble que la seule façon de résoudre les en-têtes persistants/pieds de page?

+0

Vous voulez dire faire e.preventDefault(); sur clic? –

+0

Pas vraiment :(Je l'ai clarifié un peu dans l'édition –

+0

Maintenant, j'ai essayé de le déclencher manuellement comme ça: '$ ('# album # show-album'). Trigger ('vclick')' après avoir exécuté '$ .mobile .changePage ('# album') 'et cela fonctionne réellement MAIS quand je navigue vers la page #welcome alors il est à nouveau activé (!?!?) - maintenant maintenant la # page de bienvenue ET la # capture-photo sont actives (!?!?). –

Répondre

0

Donc, je l'ai résolu d'une manière un peu laide, malheureusement. Avant d'exécuter $ .mobile.changePage ('# album'), je déclenche manuellement l'événement 'vclick' sur tous les navbars de pied de page fixes. Laide, mais pour l'instant ça marche ...: o

// HATE DOING THIS! BUT JQM IS NOT WORKING WITH ME ON THIS. 
    $('#welcome #show-album').trigger('vclick') 
    $('#album #show-album').trigger('vclick') 
Questions connexes