Как в JQuery плагине сделать так, чтобы this в передаваемой функции стал равен элементу, к которому применяется плагин?
Есть такой код.
https://jsfiddle.net/y9n2L63a/
По комментариям в JS понятно, что я хочу сделать. Как это сделать?
this в js определяется на лету в момент вызова функции в которой он используется. И заранее сделать его равным чему то нельзя.
в кратце он динамический зависит от контекста в котором используется.
Можно передать this через переменную функции...
$.fn.some_plugin = function(foo) {
return this.each(function() {
foo(this);
});
}
$('.some_div').some_plugin(function(elem) {
console.log(elem);
});
Это поведение по-умолчанию, ничего "сделать" не нужно - коллбэк плагина и так вызывается в контексте коллекции на которой вызван.
$.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'