Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

351
Vistas
Método JQuery Hover: la función de salida no funciona

Estoy aplicando un efecto de desplazamiento sobre una imagen con JQuery.

Estado en la carga de la página:

Al cargar la página

Estado al pasar el mouse:

Estado al pasar el mouse

Estado en mouseout:

Estado al pasar el mouse

Aquí está el fragmento de código:

 $(document).ready(function(){ $(".image-container").hover(function() { $(this).parents().children().children('.image-01').css({'background-color':'#D4E619', 'opacity': '0.5'}), (function() { $(this).parents().children().children('.image-01').css({'background-color':'#FFFFF','height':'0', 'opacity': '0', 'visibility' :'hidden'}); }); }); });

Probé varias instrucciones CSS pero la imagen mantiene el estado de desplazamiento.

Editar :

El objetivo final es tener un color flotante diferente en varias imágenes dentro de una cuadrícula. Todos los elementos de la cuadrícula tienen el mismo nombre de clase.

Utilizo una primera función JQuery para agregar los nombres de clase y luego genera un estado de desplazamiento específico en algunas imágenes.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Es porque mezclaste funciones de entrada y salida en una sola. Entonces, su segunda función que (supongo) debería llamarse con el mouse fuera nunca se llama.

Debe desenvolver esa función de la primera y ponerla como segundo argumento para .hover

 $(document).ready(function() { $(".image-container").hover( function() { $(this).parents().children().children('.image-01').css({ 'background-color': '#D4E619', 'opacity': '0.5' }) }, function() { $(this).parents().children().children('.image-01').css({ 'background-color': '#FFFFF', 'height': '0', 'opacity': '0', 'visibility': 'hidden' }); } ); });


Algunas sugerencias (bastante abstractas ya que no se proporciona HTML):

  1. Puede reducir la complejidad del selector encontrando el envoltorio único más cercano y luego encontrar el elemento deseado: $(this).closes('.image-wrapper').find('.image-01')
  2. A través de JS, aplique solo visualización/opacidad. A través de CSS establece reglas para el elemento cuando se muestra, no tiene sentido configurar su fondo si no está visible: $(this).[..].show(), $(this).[..].hide()
  3. Supongo que puedes hacerlo con css: .image-wrapper:hover .image-01{display: block;}
about 4 years ago · Juan Pablo Isaza Denunciar

0

Sugerencias:

  1. Use id para la imagen, para que pueda reducir la complejidad de dom.
  2. Use dos eventos separados (.hover y .mouseout)
  3. Use funciones de flecha en lugar de la palabra clave 'función'

Ejemplo:

 $(document).ready(()=>{ $("#image-01").hover(()=>{ /* css code for hover here */ } $("#image-01").mouseout(()=>{ /* css code for mouseout here */ } }

Editar:

  1. Tal vez puedas deformar todas tus imágenes en un elemento div.
    Entonces puedes usar

    let imágenes = $(' /* id del contenedor */ ').niños()

    Para conseguir a sus hijos.

    Luego, simplemente recorra las imágenes y agregue eventos de desplazamiento

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda