Il semblerait que la méthode de jQuery :visible
ne fonctionne pas pour certains éléments en ligne dans Chrome. La solution consiste à ajouter un style d'affichage, tel que "block"
o "inline-block"
pour que ça marche.
Notez également que jQuery a une définition de ce qui est visible quelque peu différente de celle de nombreux développeurs :
Les éléments sont considérés comme visibles s'ils occupent de l'espace dans le document.
Les éléments visibles ont une largeur ou une hauteur supérieure à zéro.
En d'autres termes, un élément doit avoir une largeur et une hauteur non nulles pour consommer de l'espace et être visible.
Éléments avec visibility: hidden
o opacity: 0
sont considérés comme visibles, puisqu'ils consomment toujours de l'espace dans la mise en page.
D'autre part, même si son visibility
est réglé sur hidden
ou l'opacité est de zéro, c'est toujours :visible
à jQuery car il consomme de l'espace, ce qui peut prêter à confusion lorsque le CSS indique explicitement que sa visibilité est cachée.
Les éléments qui ne sont pas dans un document sont considérés comme cachés. n'a pas la possibilité de savoir s'ils seront visibles lorsqu'ils seront ajoutés à un document. car cela dépend des styles applicables.
Tous les éléments d'option sont considérés comme cachés, quel que soit leur état de sélection. état sélectionné.
Pendant les animations qui masquent un élément, celui-ci est considéré comme visible jusqu'à la fin de l'animation. visible jusqu'à la fin de l'animation. Pendant les animations qui affichent un élément, l'élément est considéré comme visible au début de l'animation. l'animation.
La façon la plus simple de voir les choses est que si vous pouvez voir l'élément à l'écran, même si vous ne pouvez pas voir son contenu, s'il est transparent, etc., il est visible, c'est-à-dire qu'il prend de la place.
J'ai nettoyé un peu votre balisage et ajouté un style d'affichage ( Par exemple, en réglant l'affichage des éléments sur "block", etc. ), et cela fonctionne pour moi :
FIDDLE
Référence officielle de l'API pour :visible
À partir de jQuery 3, la définition de l'élément :visible
a légèrement changé
jQuery 3 modifie légèrement la signification de l'expression :visible
(et donc de :hidden
).
À partir de cette version, les éléments suivants seront pris en compte :visible
s'ils ont des cases de mise en page, y compris celles dont la largeur et/ou de hauteur nulle. Par exemple, br
et les éléments inline sans contenu seront sélectionnés par la fonction :visible
sélecteur.
1 votes
De préférence dans un lien jsfiddle ? et éventuellement le vérifier avec jquery.latest.
0 votes
Le makaspan peut être display : none, ou visibility : hidden ?
0 votes
Et peut-être mettre à jour temporairement la dernière version de jQuery, juste pour exclure un bug de jQuery ?
0 votes
J'ai essayé d'utiliser code.jquery.com/jquery-1.7.1.min.js mais la même erreur persiste
0 votes
@ArturKeyan n'a pas bien compris votre question.
0 votes
Assurez-vous que le code est dans une fonction prête à l'emploi.
0 votes
@SaadBashir J'ai demandé en HTML que votre élément soit caché avec display:none ou visibility : hidden.
0 votes
J'ai reproduit le problème sur le lien suivant : jsfiddle.net/WJU2r/3
1 votes
Voir aussi : bugs.jquery.com/ticket/13132 Il semble que cela sera corrigé dans la version 1.12/2.2 ! -
0 votes
@SaadBashir, la balise SPAN est par défaut display:inline. Si display:block résout le problème, il entraîne une modification de la mise en page. display:inline-block serait probablement une meilleure solution.
2 votes
Il n'est pas nécessaire d'ajouter " == true " dans l'instruction if en écrivant : if ($("#makespan").is(":visible") ) est suffisant