2010-10-07 7 views
0

J'essaie de faire fonctionner une fonctionnalité qui existe sur mon site mais qui fonctionne mal sur Safari pour iPhone.Safari pour iPhone ne peut pas évaluer correctement jQuery?

Eh bien, j'ai un élément « li »:

.. 
    <li><input id='showOrHide' type='button' value='show or hide'/></li> 
    <li><input type='text' value='ok'/></li> 
.. 

Lorsque je clique sur le bouton « afficher ou cacher », l'entrée de texte doit apparaître ou disparaître.

Ensuite, j'ai une fonction jQuery qui lie le clic:

$("#showOrHide").click(function(){ 
    if($(this).parent().next().is(':visible')) 
    $(this).parent().next().hide('slow'); 
else 
    $(this).parent().next().show('slow'); 
}); 

Le problème est que, si l'élément apparaît, Safari cache montre ensuite.

Je pense donc que Safari vérifie si l'élément est visible ou non. S'il est visible, il le cache, puis va dans la sélection "else". Là, il vérifie si l'élément est visible ou non. Il trouvera le non visible, puis le fera apparaître.

Existe-t-il une solution pour cela sans utiliser un framework javascript extrernal (mais jQuery)?

Merci, Cordialement

+0

Je ne vois pas tout à fait ce que votre code essaie de faire. Ainsi, lorsque vous cliquez sur le bouton 'showOrHide', il est supposé faire basculer la visibilité du second élément li? –

Répondre

1

Eh bien, vous pouvez rendre le code beaucoup plus simple en utilisant la fonction jQuery toggle pour afficher/masquer l'élément.

Je ne sais pas si cela résoudre le problème que vous voyez ...

Le code serait alors:

$("#showOrHide").click(function(){ 
    $(this).parent().next().toggle('slow'); 
}); 
+0

J'ai essayé votre fonction: Elle fonctionne parfaitement sur les navigateurs de bureau (chrome, safari) mais sur Safari pour iPhone elle a fait ce que j'ai décrit: Affiche et cache instantanément l'élément caché. – Zakaria

Questions connexes