Wie schreibt ternär Zustand in jQuery?
In diesem fiddle http://jsfiddle.net/mjmitche/6nar4/3/, wenn Sie ziehen, zum Beispiel, die kleine Blaue box in der gelben box, dann in dem großen schwarzen Feld wird rosa. Alle 4 Boxen auf der linken gezogen werden können, in die Kästen im inneren der black box.
Ende der Geige, sehen Sie den code, änderungen der black-box in rosa.
Aber ich wollen, dass ein ternärer operator, so dass, wenn das Feld schwarz ist, dann dreht er sich rosa, aber falls es sich erst rosa, dann will ich ihn wieder schwarz.
Ich weiß, das ternär ist, wie dies
x ? y: z
Also versuchte ich dies, obwohl ich wusste, es war nicht wahrscheinlich Recht
$("#blackbox").css({'background':'pink'}); ?
$("#blackbox").css({'background':'black'}); :
$("#blackbox").css({'background':'pink'});
Denke ich, die erste Zeile vor das Fragezeichen, das das problem verursacht, so wie die if
Aussage?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde mit solchen code:
Arbeiten zu lassen, müssen Sie zuerst ändern Sie Ihre CSS und entfernen Sie die
background
von der#blackbox
Erklärung, fügen Sie diese zwei-Klassen:Und weisen Sie die Klasse
bg_black
zu denblackbox
element zunächst.Aktualisiert jsFiddle: http://jsfiddle.net/6nar4/17/
Meiner Meinung nach ist es besser lesbar ist als die anderen Antworten, aber es ist bis zu Ihnen zu wählen, natürlich.
Denke ich, dass Dan und Nicola haben geeignet korrigierte code, jedoch können Sie nicht klar werden, warum der ursprüngliche code hat nicht funktioniert.
Was genannt wurde, hier ein "ternärer operator" genannt wird, eine bedingte operator in ECMA-262 Abschnitt 11.12. Es hat die form:
Den LogicalORExpression ausgewertet wird und der Rückgabewert in Boolean umgewandelt (wie ein Ausdruck in einer if-Bedingung). Wenn es zu true ausgewertet, dann wird die erste AssignmentExpression ausgewertet und der berechnete Wert zurückgegeben, andernfalls der zweite wird ausgewertet und zurückgegeben.
Den Fehler im original-code ist die zusätzliche semi-colons, die versuchten bedingte operator in einer Reihe von Anweisungen mit syntax-Fehler.
Ich tun würde (Hinzugefügt caching):
wroking Geige (neu): http://jsfiddle.net/6nar4/37/
Musste ich die ersten Betreiber als
css()
gibt den rgb-Wert der FarbeTernäre operator ist nur so geschrieben, wie Sie eine boolean-Ausdruck gefolgt von einem questionmark und dann zwei weitere Ausdrücke, getrennt durch einen Doppelpunkt.
Die erste Sache, die kann ich sehen, dass Sie haben falsch ist, dass Sie Ihre erste Ausdruck ist nicht die Rückkehr einer booleschen oder-nichts vernünftig, die umgewandelt werden kann, um einen booleschen Wert. Ihre erste Ausdruck ist immer wieder ein jQuery-Objekt, das hat keine sinnvolle interpretation als boolean und was es tut, zu konvertieren ist wohl eine unveränderliche interpretation. Sie sind immer am besten ab, die Rückkehr etwas, das hat eine bekannte Boolesche interpretation, wenn nothign sonst aus Gründen der besseren Lesbarkeit.
Die zweite Sache ist, dass Sie setzen ein Semikolon nach jeder Ihrer Ausdrücke, was aber falsch ist. Im Effekt, das bedeutet: "Ende bauen", und so bricht Ihre ternärer operator.
In dieser situation, obwohl Sie wahrscheinlich können dies tun, eine einfache Möglichkeit. Wenn Sie die Verwendung von Klassen und die Methode toggleClass dann können Sie leicht Sie diese Option, um eine Klasse auf und ab und dann können Sie Ihren Stil in dieser Klasse definition (Kudos @yoavmatchulsky für die Annahme, Verwendung von Klassen, die da oben in den Kommentaren).
Einer Geige dieser ist hier zu finden: http://jsfiddle.net/chrisvenus/wSMnV/ (basierend auf dem original)
Call ToBoolean(Result(2))
. Wenn das Ergebnis war erwartet Boolean, gäbe es keine Notwendigkeit zu nennen,Ternären operator funktioniert, weil der erste Teil gibt einen booleschen Wert zurück. In Ihrem Fall, die jQuery-css-jQuery-Methode gibt das Objekt, also nicht gültig für ternäre operation.
Von dem, was es sieht aus wie Sie versuchen, zu tun, wechseln vielleicht besser lösen Ihr problem.
EDIT: Sorry, Umschalten ist nur die Sichtbarkeit, ich glaube nicht, dass es helfen wird, Ihre Hintergrundfarbe Umschalten.
Aber hier gehen Sie:
Auch der ternäre operator erwartet Ausdrücke, keine Anweisungen. Verwenden Sie keine Semikolons, nur am Ende der ternären op.
Als andere haben richtig darauf hingewiesen, dass der erste Teil der ternären muss zurück
true
oderfalse
- und in deiner Frage der Rückgabewert ist ein jQuery-Objekt.Das problem, dass Sie haben können, in dem Vergleich ist, dass die web-Farbe werden in RGB konvertiert werden, so haben Sie den text für die, die in der ternären Zustand.
So mit CSS:
Den folgenden jQuery blättert die Farbe:
Demo
Hier ist ein funktionierendes Beispiel in side eine Funktion:
HTML:
In Ihrem Fall. Ändern Sie den Selektor und die Rückgabewerte
HTML:
schließlich, zu wissen, was ist der Wert, auf den der browser führen Sie den folgenden in die Konsole ein:
HTML:
und verwenden Sie den "rgb(xxx.xxx.xxx)" - Wert anstelle des Hex für die Farbauswahl.