2017-02-10 1 views
0

Ich fand dieses Code-Snippet, das mir erlaubt, zu einem bestimmten Wert zu verblassen, je nachdem, ob die betreffende ID über oder nicht schwebte. Ich habe jedoch Schwierigkeiten, einen Teil des fraglichen Codeausschnitts zu verstehen, und möchte dies bitte erläutern.Verständnis Toggle in Hover

Dies ist der Code-Schnipsel:

$(document).ready(function() { 

$(document).ready(function() { 
    $("#food-roulette").hover(function() { 
     this.toggle = !this.toggle;  
     $("#food-roulette").stop().fadeTo(100, this.toggle ? 0.4 : 1); 
    }); 
}); 
}); 

ich zwei Fragen haben.

1) Was ist Toggle? Ist das eine boolesche Variable in der JQuery-Bibliothek? Wie soll es verwendet werden?

2) this.toggle = !this.toggle. Diese Linie verwirrte die Hölle aus mir heraus. Unter meiner Annahme ist toggle zunächst wahr, und sobald ich den Mauszeiger über die Schaltfläche halte, wird toggle auf false gesetzt, also sollte bei der ternären Operation die Schaltfläche opacity 1 sein, aber stattdessen 0.4. In gewisser Weise funktioniert es umgekehrt. Wenn ich die this.toggle = !this.toggle Zeile nach der $("#food-roulette").stop().fadeTo(100, this.toggle ? 0.4 : 1); stelle, dann funktioniert es in umgekehrter Richtung, wo die Schaltfläche verblasst ist, bis ich darüber schwebe.

So kann mir jemand die Logik in diesen Zeilen erklären und warum es so funktioniert wie es tut. Sehr geschätzt.

+0

In jQuery 'Toggle()' ist ein Verfahren. Es wird Zustände wie ein Ein/Aus-Lichtschalter umkehren. 'this.toggle' sieht wie eine Eigenschaft aus ... keine Klammer? – zer00ne

Antwort

1

this.toggle ist eine undefinierte Variable im Zusammenhang damit. Sobald this.toggle =! This.toggle aufgerufen wird, heißt es im Grunde: undefined =! Undefined, was zu true führt. Wenn dieser Hover zum ersten Mal aufgerufen wird, wird er daher auf 0,4

eingeblendet. Sie können dies selbst überprüfen, indem Sie die Chrome-Entwicklertools (f12) öffnen, die Konsole anzeigen und dann an der Eingabeaufforderung> in this.toggle - Du wirst sehen, undefiniert. Nachdem Sie this.toggle =! This.toggle eingegeben haben, sehen Sie true.

enter image description here

+0

Ok das macht Sinn, schätze die Erklärung. Irgendeine Idee, was die toggle-Variable im Allgemeinen für die JQuery-Bibliothek verwendet (ich nehme an für Methoden, die toggle-bezogen sind, aber vielleicht mehr?) – user3051442

+0

Es gibt eine toggle() -Funktion in jQuery, die Elemente versteckt und zeigt, aber in der Beispiel oben wird es nur als zufälliger Variablenname verwendet. Du könntest es zu this.banana ändern und es würde dasselbe tun. – WizPip

+0

Eine andere Frage ist gerade aufgetreten, dies kann daran liegen, wie Javascript funktioniert, aber am Anfang ist Toggle nicht definiert, also wird es dann automatisch auf false gesetzt? Oder ist undefined in Javascript falsch gelesen? – user3051442