2012-10-05 273 views
9

Tengo una marca que alterna el estilo hover css usando esta regla. Cuando hay una casilla de verificación dentro del panel, quiero eliminar el estilo de la imagen de fondo. es posible? He intentado lo siguiente aunque falla.remove css hover style

CSS:

.StaffMode .day ul li.standard a:hover table { 
     background:url("test.png"); 
    } 

JS:

$("li.test table li").hover(
     function() { 
      if($(this).children(':checked')) { 
       alert('need to remove the background image style'); // shows as expected 
       $(this).children('a').removeClass('hover'); // this doesnt work? 
      } 
     } 
    ); 
+1

': hover' es una pseudo-clase, no es una clase real que JavaScript puede eliminar. – KRyan

+0

Puedes publicar tu HTML por favor o mejor un jsFiddle – Chin

+0

intenté virar pero es realmente complicado anotar así que es bastante difícil publicar algo significativo. –

Respuesta

18

Lo que hay que hacer es poner algunas restricciones en su regla :hover, y que su JavaScript cambiar el elemento por lo que ya no se aplica. Algo como esto:

.has-hover:hover 
{ 
    /* do whatever */ 
} 

Y entonces tu JavaScript hace esto:

$(this).children('a').removeClass('has-hover'); 

No se puede quitar el :hover pero se puede quitar la clase has-hover, y puesto que la norma exige tanto, esto evitará no se aplica la regla .has-hover:hover.