如何将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
答案 0 :(得分: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
});
答案 1 :(得分:1)
我将您的img变量引用为item
或element
,因为this
是特殊关键字,并且在函数之间移动时很难准确跟踪所引用的内容。 / p>
考虑到这一点,这些更改可能会解决您的错误:
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?',''));
});