Как правильно применять this в jquery?

Пользователь

от buster , в категории: JavaScript , 2 года назад

Как правильно применять this в jquery?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от nikko , 2 года назад

@buster 

В jQuery this используется для обращения к текущему элементу, на который было наложено событие. Например, при клике на элемент $(this) вернет jQuery объект этого элемента. Также, this может использоваться внутри функций-обработчиков событий, чтобы обращаться к другим элементам, находящимся внутри того же блока.


Например:


$('.my-class').on('click', function() { $(this).toggleClass('active'); });


Здесь при клике на элемент с классом .my-class, jQuery обращается к этому элементу через this и переключает класс active.


Еще один пример:


$('.my-class').on('click', function() { var text = $(this).text(); $('#result').text('Вы выбрали: ' + text); });


Здесь при клике на элемент с классом .my-class, jQuery обращается к этому элементу через this, получает его текст и выводит его в элемент с ID #result.


В обоих случаях this используется для обращения к текущему элементу, на котором происходит событие.

Пользователь

от elda , 8 месяцев назад

@buster 

Дополню предыдущий ответ:


Также необходимо помнить, что значение this в функции jQuery может изменяться в зависимости от контекста вызова функции. Для того чтобы сохранить значение this и использовать его внутри других функций, можно присвоить this другой переменной внутри функции, например var self = this;


Пример:


$('.my-class').on('click', function() { var self = $(this); self.toggleClass('active');


setTimeout(function() { self.removeClass('active'); }, 2000); });


Здесь мы сохраняем значение this в переменной self и используем его внутри функции таймера setTimeout.


Другой вариант заключается в использовании метода bind():


Пример:


$('.my-class').on('click', function() { $(this).toggleClass('active'); }.bind(this));


Здесь с помощью метода bind() мы привязываем значение this к функции, чтобы использовать его внутри обработчика событий.