2012-12-04 14 views
27

Alcuni stili CSS devono essere applicati a un elemento al passaggio del mouse e gli stili CSS devono essere applicati utilizzando javascript/jquery direttamente e non attraverso i fogli di stile o $(this).addClass('someStyle') perché sto inserendo gli elementi DOM in un'altra pagina.Aggiunta di attributi CSS hover tramite jQuery/Javascript

Possiamo applicare le solite stili CSS utilizzando

$('#some-content').css({ 
    marginTop: '60px', 
    display: 'inline-block' 
}); 

Come dovremmo aggiungere gli stili CSS per :hover eventi?


Dobbiamo ricorrere a:

$('#some-content').hover(
     function(){ $(this).css('display', 'block') }, 
     function(){ $(this).css('display', 'none') } 
) 
+0

Guarda il '.hover()' metodo jQuery. http://api.jquery.com/hover/ –

+0

perché non aggiungere e rimuovere una classe basata sull'evento hover in jquery o onmouseover e onmouseout? –

+0

vuoi che l'elemento scompaia quando ti sei allontanato da esso? Come dovresti passare di nuovo su di esso? – Alnitak

risposta

21

Trovo usando MouseEnter e mouseLeave di essere migliore di hover. C'è più controllo.

$("#somecontent").mouseenter(function() { 
    $(this).css("background", "#F00").css("border-radius", "3px"); 
}).mouseleave(function() { 
    $(this).css("background", "00F").css("border-radius", "0px"); 
}); 
+5

Cura di elaborare la dichiarazione "C'è più controllo"? Per quanto ne so, la funzione '.hover()' è solo una scorciatoia per fare esattamente ciò che hai codificato. –

+3

Mi piace la chiarezza con cui dice "mouse che entra nell'elemento" e "mouse che lascia l'elemento". Tuttavia, i grafici su questa pagina suggeriscono che liveenter/mouse è il migliore in termini di ottimizzazione. http://jsperf.com/hover-vs-mouseenter – Jon

12

Prova questo:

$('#some-content').hover(function(){ 
    $(this).css({ marginTop: '60px', display: 'inline-block' }); 
}, function(){ 
    $(this).css({ //other stuff }); 
}); 

o utilizzando classi

$('#some-content').hover(function(){ 
    $(this).toggleClass('newClass'); 
}); 

Maggiori informazioni qui .hover() e .toggleClass()

3

Si dovrebbe mettere in un evento hover:

012.
var elem = $('#elem'); 

elem.hover(function() { 
    // ... :hover, set styles 
}, function() { 
    // ... this function is called when the mouse leaves the item, set back the 
    //  normal styles 
}); 

Tuttavia, consiglio vivamente di mettere il tuo CSS in classi e usare quelle classi in JS, dovresti dividere le lingue il più possibile.

2
$("#someObj").hover(function(){ 
    $(this).css(...); 
}:); 

http://api.jquery.com/hover/

+0

Questo fa sì che il css si attacchi dopo aver spostato il mouse. – Moss