Nach einer langen Suche habe ich nicht gefunden, wonach ich suche, oder wenn ich es gefunden habe, hat es nicht für das funktioniert, was ich mache, oder ich wusste nicht, wie ich es richtig benutzen sollte. In allen Fällen brauche ich wirklich Ihre Hilfe in dieser Angelegenheit.
Was ich gemacht habe, ist mein processing
div zu definieren, indem ich nur das div(s) mit ID identifiziere, dann wird der Rest in jQuery geschrieben. Es gibt viel Code, also werde ich eine gekürzte Version hochladen.
HTML
BLAU
ROT
GELB
jQuery
$(".processing").click(function () {
var $this = $(this);
var ID = $this.attr('id');
switch(ID){
case "blue":
var name = $this.find(".text").text();
var width = 60;
// einige andere Variablen
break;
case "red":
var name = $this.find(".text").text();
var width = 40;
// einige andere Variablen
break;
case "yellow":
var name = $this.find(".text").text();
var width = 20;
// einige andere Variablen
break;
}
$this.find(".text").text("DAS " + name);
$this.find(".bar").css("width", width + "%");
// einige andere komplizierte Codierung
});
Erklärung dessen, was der Code tut
Dies ist die einfache Version, das HTML für alle div(s) ist gleich, aber die IDs sind unterschiedlich und das text
div auch. Sobald das div angeklickt wird, wird der Code die ID erhalten und dann mit der switch
übereinstimmen, um die richtigen Variablen dafür zu erhalten (es gibt noch viel mehr Variablen als diese). Angenommen, das mit der ID blue
markierte div wird angeklickt, wird die Breite des mit der Klasse bar
markierten div innerhalb des blue
auf 60% geändert gemäß der switch
. Wenn auf rot
geklickt wurde, wird die Balkenbreite für rot
auf 40% geändert und so weiter.
Alle wichtigen Variablen sind innerhalb der click
Funktion. Was ich möchte ist...
Was ich möchte
Vor dem Klicken möchte ich, dass der Benutzer mit der Maus über die Leiste fahren kann und neben dem Text wird das Prozentsatz erscheinen, ohne zu klicken, dann verschwindet es wieder, wenn die Maus weg ist.
Ich weiß, wie man das mit Funktionen macht, unter Verwendung von mouseenter
und mouseleave
.
Das Problem
das Problem ist... Ich müsste die Variablen 3 mal verwenden. Für mouseenter
, mouseleave
und für click
. Wie könnte ich das machen oder was sollte ich mit den Variablen machen, damit ich sie in diesen drei Funktionen ohne Wiederholung verwenden kann.
Das processing
div ist ein Rechteck,
das bar
div ist der Hintergrund,
und das text
div ist der Text über der Prozessleiste.
Bild zur Erklärung: https://i.sstatic.net/EOyoy.png
1 Erinnerung
In diesem Beispiel ist die var
, die ich in allen Funktionen verwenden möchte, width
. Aber im Code, den ich habe (Langversion), gibt es nicht nur eine Variable.