2012-12-04 10 views
27

Einige CSS-Stile müssen auf ein Element in Hover angewendet werden, und CSS-Stile müssen direkt mit javascript/jquery und nicht über Stylesheets oder $(this).addClass('someStyle') angewendet werden, da ich die DOM-Elemente in injiziere eine andere Seite.Hinzufügen von Hover-CSS-Attributen über jQuery/Javascript

Wir können die üblichen CSS-Stile anwenden mit

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

Wie sollten wir die CSS-Stile für :hover Ereignisse hinzufügen?


Müssen wir zurückgreifen:

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

die '.hover Schauen()' Methode in jquery. http://api.jquery.com/hover/ –

+0

Warum nicht hinzufügen und entfernen Sie eine Klasse basierend auf dem Hover-Ereignis in jquery oder onmouseover und onmouseout? –

+0

Sie möchten, dass das Element verschwindet, wenn Sie sich davon entfernt haben? Wie sollst du wieder darauf schweben? – Alnitak

Antwort

21

I MouseEnter- finden Verwendung und Leave als Hover besser zu sein. Es gibt mehr Kontrolle.

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

Vorsicht bei der Erklärung "Es gibt mehr Kontrolle"? Soweit ich weiß, ist die Funktion '.hover()' nur eine Kurzform, um genau das zu tun, was Sie programmiert haben. –

+3

Ich mag einfach die explizite Aussage "Maus, die in das Element eintritt" und "Maus verlässt das Element". Die Grafiken auf dieser Seite würden jedoch vorschlagen, dass Live Mouseenter/Mouselave in Bezug auf die Optimierung am besten ist. http://jsperf.com/hover-vs-mouseenter – Jon

12

Versuchen Sie folgendes:

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

oder mithilfe von Klassen

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

Mehr Infos hier .hover() und .toggleClass()

3

Sie sollten sie in einem hover Ereignis setzen:

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 
}); 

Allerdings empfehle ich Ihnen, Ihr CSS vollständig in Klassen zu platzieren und diese Klassen in JS zu verwenden. Sie sollten die Sprachen so weit wie möglich aufteilen.

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

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

+0

Dies führt dazu, dass die CSS nach dem Verschieben der Maus bleiben. – Moss

Verwandte Themen