jQuery: передача $ this с другими параметрами в функцию

0

Как я могу передать this с другими параметрами для работы? Пробовал следующее без успеха:

    function update_alt($this,my_param){
        this_alt=$(this).attr('alt');
        $(this).attr('alt',this_alt+my_param);
    }

//  $('.asd img').each(update_alt); // passing $this ok
    $('.asd img').each(update_alt(this,prompt('alt?',''))); // null
  • 3
    Вы даже не получаете доступ к $this в обратном вызове. Что вы хотите, чтобы это относится? И на что вы хотите this ссылаться?
Теги:
function
parameters

2 ответа

1
Лучший ответ

Я бы ссылался на вашу переменную img как на item или element потому что this специальное ключевое слово, и может быть трудно отследить, что именно происходит при перемещении между функциями.

Имея это в виду, эти изменения могут решить вашу ошибку:

function update_alt(item, my_param) {
  var $item   = $(item);
  var new_alt = $item.attr('alt') + my_param;
  $item.attr('alt', new_alt);
}

$('.asd img').each(function(index, item) { 
  update_alt(item, prompt('alt?',''));
});
  • 0
    спасибо за index и варианты item !
  • 0
    @Oli Спасибо за публикацию так же, как я.
Показать ещё 1 комментарий
1

В update_alt(), вы можете переименовать все ваше this к element, для ясности коды. Кроме того, вы не использовали $this в своей функции.

Измените его для этого:

function update_alt(element,my_param){
    element_alt= $(element).attr('alt');
    $(element).attr('alt',element_alt+my_param);
}

Затем, чтобы использовать его, вы должны вызвать его в другой функции, так что this относится к текущему элементу:

$('.asd img').each(function(){
    update_alt(this,prompt('alt?',''));   //"this" has a meaning in this closure
});
  • 0
    Спасибо за быстрое решение!
  • 0
    @eaposztrof Добро пожаловать!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню