2014-01-07 99 views
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'回调里面。你想要提及什么?你想要'这个'是指什么? –

回答

1

我最好参考您的img变量为itemelement,因为this是特殊关键字,并且很难精确跟踪在函数间移动时引用的内容。

考虑到这一点,这些变化可能会解决你的bug:

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'选项! – eapo

+0

@Oli感谢您发布和我一样的文章。 – Bigood

+0

@Bigood你很快!对不起,我没有刷新加载它,因为我正在打字。 – odlp

1

update_alt(),你可能会重新命名所有的thiselement,代码清晰。另外,你的功能中没有使用$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

谢谢您的快速解决方案! – eapo

+0

@eaposztrof不客气! – Bigood