2009-12-16 14 views
0

Quelqu'un peut-il m'aider avec cejquery stop mouseover événement après un événement click

J'essaie de définir une couleur différente pour l'élément de l'événement click.

Le problème est que l'événement mouseover rend tout blanc à nouveau. Donc, je ne pourrai jamais voir la couleur de la classe active (actief).

Que puis-je faire, j'ai déjà essayé de mettre dans la ligne propagation stopevent() ??

merci, Richard

$("#tbestel_opties2 span").live("mouseover", function() { 
      $t=$(this); 
      if(!$t.hasClass('actief')){ 

       $t.css({'color':'#fff','backgroundColor':'#fdc601'}); 
      } 
     }); 
     $("#tbestel_opties2 span").live("mouseout", function() { 
       $t=$(this); 
       if(!$t.hasClass('actief')){ 
       $t.css({'color':'#333','backgroundColor':'#fdc601'});                   } 
     }); 

     $("#tbestel_opties input,#tbestel_opties2 span").live("click", function(e) 
     {e.stopPropagation(); 
      $t=$(this); 
       $('#tbestel_opties2 .actief').removeClass("actief").css({'color':'#333'}); 

      $t.addClass("actief") 

      $("#opties li:eq(0)").addClass("actief"); 


    }); 

Répondre

1

Utilisez plutôt une classe. Lorsqu'un élément est cliqué, ajoutez une autre classe à l'élément. Assurez-vous que cette classe n'est pas définie avant de faire quoi que ce soit dans mouseover/out. Cela a aussi l'avantage de vous permettre de déplacer le style des éléments cliqués dans votre CSS si vous le souhaitez.

+0

Merci, utilisez simplement addClass et PAS le css(). Je vais essayer ça. Bien que je ne comprends pas pourquoi hasClass n'a pas fonctionné? – Richard

1

La fonction de propagation arrêtée arrête le comportement par défaut de l'événement click et n'a aucune incidence sur le passage de la souris.

En changeant votre utilisation du sélecteur CSS à une fonction addClass qui correspond à ces changements CSS, vous serez en mesure d'obtenir l'ordre des événements que vous recherchez.

+0

On dirait que Dark Falcon m'a battu d'une minute sur les cours;) – Aaron

+0

Il est parfois frustrant de dactylographier une réponse puis de voir quelqu'un répondre exactement la même réponse quelques secondes auparavant. :) –

1

essayer dans votre événement mouseover:

var currentColor = $(this).css("background-color"); 
jQuery.data($(this).get(0), "basecolor", currentColor); 

il stocke les métadonnées avec l'élément. vous pouvez alors lire cette valeur en cas de clic

var currentColor = jQuery.data($(this).get(0), "basecolor"); 
1

pas à la pluie sur la parade JQuery, mais pourquoi ne pas simplement utiliser la classe: hover psuedo?

+0

J'ai récemment ajouté des éléments, hover ne fonctionne pas avec live. – Richard

+1

Il semble que vous êtes sérieusement en train de penser à des choses. Je ne voulais pas ajouter une classe hover avec Jquery, je voulais dire ajouter un élément avec une classe, et avoir .class: hover défini sur vos feuilles de style ... Vous utilisez javascript pour réinventer la roue. –

+0

: hover n'est pas pris en charge sur autre chose que la balise 'a' dans IE6. S'il a besoin de ce que je peux maintenant considérer comme un support hérité, votre solution ne fonctionnera pas car il semble cibler une balise span. – Aaron