Ich habe diesen einfachen Code, toggle
s alle Elemente einer Klasse thumbnail
mit Ausnahme der einen geklickt. Dann sollte nach 2 Sekunden eine bestimmte Klasse zum angeklickten Element hinzugefügt oder entfernt werden, abhängig davon, ob es bereits ausgewählt ist.Funktion funktioniert nicht - (dies) ändert seinen Wert darin
Das Problem ist mit setTimeout
(höchstwahrscheinlich), da es nicht meine Funktion ausführen, die über if else
prüft, ob geklickt Element ausgewählt werden sollte oder nicht ausgewählt, und fügt dann/selected-ser
Klasse entfernen.
$(document).ready(function(){
$(".thumbnail").click(function(){
$('.thumbnail').not(this).toggle(2000);
setTimeout(function() {
if ($(this).hasClass('selected-ser')) {
$(this).removeClass('selected-ser');
} else {
$(this).addClass('selected-ser');
}
}, 2000);
});
});
Ich versuchte wirklich für ähnliche Themen bereits gelöst zu suchen, aber ich verstehe nicht so, wie es nicht funktioniert (es die Funktion selbst sein kann, was falsch ist, aber ich habe keine Ahnung)
Vielen Dank.
Edit: wie es scheint this Thema adressiert das gleiche Problem. Ich konnte vorher nicht danach suchen, da ich nicht wusste, dass das Problem mit "Besitzer von this
" war. Daher benenne ich dieses Thema zu "Funktion funktioniert nicht - (dies) ändert seinen Wert darin." So können Leute, die sich mit dem gleichen Problem befassen, leichter nach ihr suchen, ohne zu wissen, warum die Funktion nicht richtig funktioniert.
Danke
Erhalten Sie einen Fehler in der Konsole? –
Bitte erstellen Sie ein JFiddle. Das Problem scheint mit diesem innerhalb sein setTimeout – brk
Inside setTimeout-Funktion Callback, bezieht sich 'this auf Fensterobjekt. Verwenden Sie also eine Schließung oder setzen Sie einen relevanten Kontext, z. B .: 'setTimeout (function() {/**/}.bind(this), 2000);' –