2013-04-08 3 views
0

J'utilise le code suivant pour que mes boutons passent à leur état de survol quand survolé.3 état de bouton - normal, survol (sur hover), actif (sur clic) avec jquery?

$('.button').hover(function(){ 
$(this).css('background-position', '0 -23px'); 
}, function(){ 
$(this).css('background-position', '0 0px'); 
}); 

avec la classe .button appliquée à tous les boutons divs, en utilisant la fonction de la position d'arrière-plan où toutes les images de fond ont tous les trois états dans la même image - à « 0 0px » montrent l'état normal, à '0 -23px' indique l'état de survol, et '0 -46px' indique l'état actif. J'essaye de comprendre comment obtenir mes boutons pour montrer leurs états actifs quand ils sont cliqués, tandis que tous les autres boutons de bouton retournent à leurs états normaux. J'ai essayé le code suivant qui change les boutons à leurs états actifs, mais quand la souris est enlevée des boutons ils retournent à leurs états normaux.

$('.button').click(function(){ 
$(this).css('background-position', '0 -46px'); 
}); 

Merci!

+0

peut vous faire un violon? – SachinGutte

+0

Donc quand vous cliquez dessus vous voulez rester dans l'état "actif"? –

+0

pourquoi êtes-vous créer 3 classes en css (.hover, .rollover, .active) et juste changer de classe en jquery .. utiliser .live .. Je peux vous montrer le code si vous dites comment les boutons sont implémentés ... – Dinesh

Répondre

2

Vous pouvez ajouter classe pour cela, comme:

Ajouter thi dans votre CSS

.active{background-position:0 -46px !important;} 

Et Jquery utiliser comme

$(document).ready(function(){ 
    $('.button').click(function(){ 
     $(this).toggleClass('active'); 
    }); 
}); 

Lire Docs http://api.jquery.com/toggleClass/

+0

Brilliant! Merci beaucoup! J'ai résolu mes problèmes et c'est vraiment utile. J'adore ce site. – DillonB

+0

Je ai fait un violon au cas où quelqu'un a un problème similaire et veut voir comment j'ai mis en œuvre ces solutions pour obtenir mes boutons pour travailler comme je voulais -> http://jsfiddle.net/PPbFJ/11/ – DillonB

0

Maintenant, si vous avez utilisé pour fonction de rappel dans jquery que celle utilisée à ce formate ..

$('.button').hover(function(){ 
    $(this).css('background-position', '0 -23px', function(){ 
    $(this).css('background-position', '0 0'); 
    }); 
}); 

En savoir plus sur Call Back Function

2

Vous pouvez utiliser la classe pseudo a: active {background-img: -; background-position: 0 -46px;}

12

La meilleure chose à faire serait simple mise en œuvre de css.

.button 
{ 
    //your css 
} 
.button:active 
{ 
    //your css 
} 
.button:hover 
{ 
    //your css 
} 

Hope it helps :)

+0

Les trois boutons J'ai implémenté les classes avec la réponse de Rohan Kumar et ça a bien fonctionné. – DillonB

+0

hey, .. ça marche !! :) – Ansyori

+0

J'ai mis en place des boutons de cette manière, mais j'ai rencontré un problème en ajoutant des événements click dans Safari: https://stackoverflow.com/questions/48106286/safari-click-event-and-active-state-cannot-coexist –