$(this).addClass не работает

131
22 мая 2018, 01:00

В таблице есть такая строка:

<tr class="homeInfo" onclick="AreaToggle()" >

Скрипт такой:

function AreaToggle() {
    $(this).addClass("hidden");
}

А в итоге класс не добавляется. toggleClass тоже не работает.

В чем может быть проблема?

Answer 1

При таком объявлении this внутри функции указывает на глобальный объект (window) либо undefined если указана директива "use strict".

Поэтому $(this).addClass не сработал.

Для исправления нужно либо передать элемент непосредственно в функцию:

function AreaToggle(el) { 
  $(el).addClass("hidden"); 
}
.hidden { 
  color: red; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<span class="homeInfo" onclick="AreaToggle(this)">Click</span>

Либо добавлять обработчик с помощью jQuery либо addEventListner, а не непосредственно в разметке.

READ ALSO
Адаптировать div блоки

Адаптировать div блоки

Есть progress bar но как только я уменьшаю окно браузера сам бар уезжает внизКак его адаптировать ?

171
Застрял с JQUERY

Застрял с JQUERY

При клике на лайк он становится красным, при втором клике я хочу снять красный цвет с лайка

204
Выполнение скрипта в рамках цикла

Выполнение скрипта в рамках цикла

Имеется на сайте цикл, где выводится в виде:

208
Анимированная тень на JS не работает

Анимированная тень на JS не работает

Прописываю анимацию для объекта на страницеМенять размеры получается

198