@Galdar
Web, JS, PHP, NGINX, Linux

Как изменить стиль добавленный через .css()?

Такой вопрос возник, вот добавил я стиль
$(this).css('border-color','red');
и хочу его поменять через 1 секунду
setTimeout(function() {
$(this).css('border-color', 'none');
},1000);

Почему не заменяется стиль? И удаление через attr то же не работает
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
FinGanapre
@FinGanapre
Проблема с контекстом выполнения.
Когда вы передаёте функцию в setTimeout, её контекст (this) - это не тот контекст (this), который вы бы хотели получить.

Используйте стрелочную функцию для сохранения контекста (стрелочные функции в js не имеют собственного контекста):
setTimeout(() => {
$(this).css('border-color', 'none');
},1000);


Или сохраните контекст (this) в переменную, которую получите через замыкание:
var that = this;
setTimeout( function() {
$(that).css('border-color', 'none');
},1000);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы