Задать вопрос
@del993788

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

Здравствуйте. По идее должно быть так: нажал на крест, блок стал прозрачным, блок исчез. Но по каким-то причинам через setTimeout не получается это сделать. Посмотрите https://jsfiddle.net/z8u367tn/
  • Вопрос задан
  • 344 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 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).....
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
24 дек. 2024, в 16:09
70000 руб./за проект
24 дек. 2024, в 15:54
300 руб./за проект
24 дек. 2024, в 15:42
2000 руб./за проект