5 Stimmen

Wie kann ich die Hintergrundfarbe einer Klasse mit Jquery überprüfen?

Ich habe die Hintergrundfarbe einer Klasse mit css festgelegt, jetzt möchte ich sie mit jquery in eine Variable setzen. Danke

5voto

Sampson Punkte 258265

Möglicherweise müssen Sie diese Klasse auf ein temporäres Element anwenden und dann die Farbe bgcolor dieses Elements extrahieren.

.cm { background-color:#990000 }

--

// creating an empty element and applying our class to it
var bgcolor = $("<div>").appendTo("body").addClass("cm").css("background-color");
alert(bgcolor); // rgb(153, 0, 0)

4voto

CalebD Punkte 4812

Wenn es auf der Seite ein Element gibt, das diese Klasse verwendet, können Sie etwas wie folgt tun:

var backgroundColor = $('.classname').css('background-color');

Aber wenn nichts ist mit der Klasse, ich bin nicht vertraut mit einem Weg, um die Farbe außer dem Laden der .css-Datei und Parsing es in JavaScript (weniger als ideal) zu greifen.

1voto

Anthony Punkte 35161

Das Problem ist, dass Jquery das eigentliche Stylesheet nicht durchlaufen kann (soweit ich weiß). Wenn Sie also ein Element mit zwei Klassen haben, können Sie nicht wissen, ob die zurückgegebene Farbe für die gewünschte Klasse oder die andere Klasse bestimmt ist. Zum Beispiel:

.big { Hintergrundfarbe: gelb; }

.mean { Hintergrundfarbe: blau; }

Die erste wäre blau, aber wenn Sie die Hintergrundfarbe mit anfordern:

 $(".big").css("background-color");

Sie würden blau erhalten, obwohl diese Klasse auf gelb eingestellt ist, da das erste Element technisch gesehen der Klasse big angehört, aber einen blauen Hintergrund hat.

Mir gefällt die Idee von Jonathan Sampson. Erstellen Sie ein Element, machen Sie es unsichtbar oder aus dem Bildschirm, aber geben Sie ihm eine ID und die Klasse, über die Sie sich wundern. Überprüfen Sie dann die Hintergrundfarbe dieser ID, anstatt nach Klasse zu suchen:

 $("#colortest").css("background-color");

0voto

Per H Punkte 1542
var $tmp = $('<a class="classname"></a>');
$('body').append($tmp).hide();
var color = $('.classname').css('background-color');
$tmp.remove();

EDIT: Wendet die Klasse auf ein verborgenes Element an.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X