@del993788

Почему не работает (this).parent вместе с setTimeout?

Здравствуйте. По идее должно быть так: нажал на крест, блок стал прозрачным, блок исчез. Но по каким-то причинам через setTimeout не получается это сделать. Посмотрите https://jsfiddle.net/z8u367tn/
  • Вопрос задан
  • 335 просмотров
Решения вопроса 2
petermzg
@petermzg
Самый лучший программист
Потому что this это служебная переменная указывающая на текущий контекст.
Когда setTimeout вызывает анонимную функцию, то передает ей свой контекст.
Поэтому this до вызова setTimeout один, а в анонимной функции другой.

Для правильной работы вашего примера нужно воспользоваться замыканием и написать примерно так.
$(".fav-del").click(function(){
   $(this).parent(".fav-tov").addClass("opacity");
   var that = this;
   setTimeout(function(){ $(that).parent(".fav-tov").addClass("none"); }, 500);
});
Ответ написан
edli007
@edli007
full stack, team lead
Потому что у setTimeout свой this.
Вам надо его сохранить сначала куда-то, например:

var el = this;
setTimeout( function(){ $( el).....
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 апр. 2024, в 00:02
1000 руб./за проект
17 апр. 2024, в 00:00
1500 руб./за проект
16 апр. 2024, в 23:47
20000 руб./за проект