При использовании встроенного обработчика вызываемая функция выполняется в области действия элемента window
, а не элемента, вызвавшего событие. Чтобы обойти это, вы можете передать this
в качестве аргумента:
<div class="class1" onClick="TestFunction(this);">Click</div>
function TestFunction(el) {
el.addClass('active');
}
Однако это не очень хорошая практика. Встроенные атрибуты событий устарели и теперь считаются плохой практикой. Лучший способ добиться этого - подключить ненавязчивые обработчики событий. В простом JS это будет выглядеть так:
<div class="class1">Click</div>
document.querySelectorAll('.class1').forEach(el => {
el.addEventListener('click', function() {
this.classList.add('active');
});
});
В jQuery это будет выглядеть так:
<div class="class1">Click</div>
jQuery($ => {
$('.class1').on('click', function() {
$(this).addClass('active');
});
});