jQuery:将$ this与其他参数一起传递给函数

时间:2014-01-07 23:04:30

标签: javascript jquery function parameters

如何将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

2 个答案:

答案 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变量引用为itemelement,因为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?',''));
});