Parece que el :visible
selector de jQuery no funciona para algunos elementos en línea en Chrome. La solución es agregar un estilo de visualización, como "block"
o "inline-block"
para que funcione.
También tenga en cuenta que jQuery tiene una definición algo diferente de lo que es visible que muchos desarrolladores:
Los elementos se consideran visibles si consumen espacio en el documento.
Los elementos visibles tienen un ancho o alto mayor que cero.
En otras palabras, un elemento debe tener un ancho y una altura distintos de cero para consumir espacio y ser visibles.
Elementos con visibility: hidden
o opacity: 0
se consideran visibles, ya que aún consumen espacio en el diseño.
Por otro lado, incluso si visibility
se establece en hidden
o la opacidad es cero, todavía :visible
es jQuery ya que consume espacio, lo que puede ser confuso cuando el CSS dice explícitamente que su visibilidad está oculta.
Los elementos que no están en un documento se consideran ocultos; jQuery no tiene una manera de saber si serán visibles cuando se agreguen a un documento, ya que depende de los estilos aplicables.
Todos los elementos de opción se consideran ocultos, independientemente de su estado seleccionado.
Durante las animaciones que ocultan un elemento, el elemento se considera visible hasta el final de la animación. Durante las animaciones para mostrar un elemento, el elemento se considera visible al comienzo de la animación.
La manera fácil de verlo es que si puede ver el elemento en la pantalla, incluso si no puede ver su contenido, es transparente, etc., es visible, es decir, ocupa espacio.
Limpié un poco su marcado y agregué un estilo de visualización ( es decir, configurar la visualización de elementos para "bloquear", etc. ), y esto funciona para mí:
VIOLÍN
Referencia oficial de API para :visible
A partir de jQuery 3, la definición de :visible
ha cambiado ligeramente
jQuery 3 modifica ligeramente el significado de :visible
(y por lo tanto de
:hidden
).
A partir de esta versión, se considerarán los elementos
:visible
si tienen cuadros de diseño, incluidos los de ancho y / o alto cero. Por ejemplo, br
el :visible
selector seleccionará elementos y elementos en línea sin contenido .