Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Как передать this от текущего элемента jQuery?

#jquery


Есть событие клика по элементу a:

$('.edit_comment li a').click(function(){

 function MyFunct();
}


Как передать внутрь функции this от события, чтобы в MyFunct я могу обращаться так
$(this).closest('div'); // Найти ближайщий div от ссылки, по которой кликнули

Пытаюсь сделать так:

$('.edit_comment li a').click(function() {
    var element = this;
SaveChangesEditComments(element, null)
});

function SaveChangesEditComments(element, changedText) { 
    var data = element.attr('data');  // не получаю нужное
});

    


Ответы

Ответ 1



Обычно вот так: $('.edit_comment li a').click(MyFunct); function MyFunct(); { console.log($(this)) } но если this меняется, скажем при setTimeout то так: $('.edit_comment li a').click(function() { var that=this; setTimeout(function() console.log("timeout started"); MyFunct.apply(that,{a:1,b:4}); //передать функции that как её this (сменить контекст) },100); function MyFunct(args); { console.log($(this),args) }

Ответ 2



Плохо знаком с JQuery, но могу подсказать предполагаемый алгоритм. Найти сначала общий с $('.edit_comment li a') родительский элемент и потом с ним работать. И по-моему JQuery не поддерживает "самодельные" внутри себя функции.

Ответ 3



Попробуйте var data = $(element).attr('data'); вместо var data = element.attr('data');

Ответ 4



Разве так нельзя? Я Вас правильно понял? function myfunction(element){ console.log(element); element.animate({.......or other } $("#some_block a" ).click(myfunction($(this)));

Комментариев нет:

Отправить комментарий