Как я могу передать 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
Я бы ссылался на вашу переменную 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?',''));
});
index
и варианты item
!
В 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
});
$this
в обратном вызове. Что вы хотите, чтобы это относится? И на что вы хотитеthis
ссылаться?