jQuery Die Funktion css () ändert die Eigenschaft 'a' nicht die Eigenschaft 'a: hover'

7

Ich habe momentan Probleme mit der Funktion jQuery css() . Es ändert den css-Wert des border-top-color des Ankerelements anstatt nur des border-top-color des Ankerelements, wenn er aktiviert ist. Unten ist mein Code.

%Vor%

Warum werden die Eigenschaften #header #headerlist li a border-top-color und #header #headerlist li a:hover geändert und nicht nur die Eigenschaft #header #headerlist li a:hover ?

    
Thomas Smith 08.05.2009, 00:43
quelle

5 Antworten

20

Der Grund, warum dein Beispiel nicht funktioniert, ist, dass der Selektor keine Möglichkeit hat, zu erkennen: hover, da das eine reine CSS-Sache ist. Stattdessen können Sie versuchen, die tatsächliche Methode jquery hover zu verwenden:

%Vor%

Alternativ können Sie auch die addclass-Methode verwenden:

%Vor%

Dies könnte weiter vereinfacht werden zu:

%Vor%     
Soviut 08.05.2009 01:07
quelle
12

Ich weiß nicht genau warum, aber diese Art von Änderungen ist besser in CSS, also würde ich vorschlagen, dass, wenn Sie dies wirklich über JS ändern müssen, erstellen Sie eine CSS-Klasse, dann ändern Sie das in JS.

CSS

%Vor%

JS

%Vor%

Auf diese Weise können Sie die Funktionalität besser von der Präsentation trennen.

    
Seb 08.05.2009 00:55
quelle
1

Der Grund, warum es nicht funktioniert, liegt darin, dass das Bit :hover dem Selektor keine Informationen über ein Element liefert.

a:hover in CSS-Übereinstimmungen mit denselben exakten Elementen wie a , es definiert nur einen anderen Satz von Eigenschaften, wenn der Benutzer über diesen Elementen schwebt.

Der jQuery-Selektor wurde entwickelt, um Elemente zu finden (auszuwählen), nicht um sie zu stylen.

Die css() -Methode setzt einfach einen Inline-Stil für die ausgewählten Elemente, fügt nicht tatsächliche CSS-Deklarationen hinzu oder ändert sie.

Wie bereits erwähnt, können Sie das Ereignis hover() verwenden, um dasselbe Verhalten zu erhalten. Das Hinzufügen einer Klasse im laufenden Betrieb ist jedoch wahrscheinlich besser, wie ein anderer Beantworter beschrieben hat.

Wenn Sie es jedoch nicht sofort ändern müssen, empfehle ich die Verwendung von einfachem CSS, da es schneller ist und kein Benutzer Javascript aktivieren muss.

    
TM. 08.05.2009 04:35
quelle
0

Dieser Code ist seit 1.9

gebrochen %Vor%

verwende stattdessen

%Vor%     
ceed 10.09.2013 20:35
quelle
0

Fügen Sie dem Hover-CSS einen wichtigen Zusatz hinzu, um zu vermeiden, dass der Stil überschrieben wird. zum Beispiel:

%Vor%
    
Yt Li 10.05.2016 03:42
quelle