Top.Mail.Ru
Ответы

Как в JQuery плагине сделать так, чтобы this в передаваемой функции стал равен элементу, к которому применяется плагин?

Есть такой код.
https://jsfiddle.net/y9n2L63a/

По комментариям в JS понятно, что я хочу сделать. Как это сделать?

По дате
По рейтингу
Аватар пользователя
Новичок
5лет

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

Аватар пользователя
Гений
5лет

Можно передать this через переменную функции...

$.fn.some_plugin = function(foo) {
return this.each(function() {
foo(this);
});
}

$('.some_div').some_plugin(function(elem) {
console.log(elem);
});

Аватар пользователя
Просветленный
5лет
Аватар пользователя
Искусственный Интеллект
5лет

Это поведение по-умолчанию, ничего "сделать" не нужно - коллбэк плагина и так вызывается в контексте коллекции на которой вызван.

$.fn.logClasses = function () {
 return this.each(function () { console.log(this.className); });
};
for (let i = 0; i < 10; i++)
 $('body').append('<div class="example"></div>');
$('.example').logClasses();  // 10 раз выведет 'example'