Il semble que le :visible
sélecteur de jQuery ne fonctionne pas pour certains éléments en ligne dans Chrome. La solution consiste à ajouter un style d'affichage, comme "block"
ou"inline-block"
pour le faire fonctionner.
Notez également que jQuery a une définition quelque peu différente de ce qui est visible que de nombreux développeurs:
Les éléments sont considérés comme visibles s'ils consomment 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.
Les éléments avec visibility: hidden
ou opacity: 0
sont considérés comme visibles, car ils consomment toujours de l'espace dans la mise en page.
D'un autre côté, même si son visibility
est défini sur hidden
ou l'opacité est nulle, c'est toujours :visible
à jQuery car il consomme de l'espace, ce qui peut être déroutant lorsque le CSS dit explicitement que sa visibilité est masquée.
Les éléments qui ne figurent pas dans un document sont considérés comme masqués; jQuery n'a aucun moyen 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 masqués, quel que soit leur état sélectionné.
Lors des animations qui masquent un élément, l'élément est considéré comme visible jusqu'à la fin de l'animation. Lors des animations pour montrer un élément, l'élément est considéré comme visible au début de l'animation.
Le moyen le plus simple de le regarder est que si vous pouvez voir l'élément à l'écran, même si vous ne pouvez pas voir son contenu, il est transparent, etc., il est visible, c'est-à-dire qu'il prend de la place.
J'ai un peu nettoyé votre balisage et ajouté un style d'affichage ( c'est-à-dire en définissant l'affichage des éléments sur "bloquer", etc. ), et cela fonctionne pour moi:
VIOLON
Référence officielle de l'API pour :visible
Depuis jQuery 3, la définition de :visible
a légèrement changé
jQuery 3 modifie légèrement la signification de :visible
(et donc de
:hidden
).
À partir de cette version, les éléments seront pris en compte
:visible
s'ils ont des boîtes de mise en page, y compris celles de largeur et / ou de hauteur zéro. Par exemple, les br
éléments et les éléments en ligne sans contenu seront sélectionnés par le :visible
sélecteur.