$(this)在jquery自动完成源中 - 为什么它不起作用,但解决方法呢?

时间:2012-07-04 23:39:08

标签: jquery autocomplete

我在使用以下代码时遇到了一些麻烦。 $(this)似乎未定义。

$('.version-autocomplete').autocomplete({
    source: '/ajax/versions.json?procedure_name=' + $(this).attr('procedure_name')
})

我发现这有效,我想知道为什么会这样。有人知道吗?

$('.version-autocomplete').each(function(i, el) {      
    $(el).autocomplete({
        source : '/ajax/versions.json?procedure_name=' + $(el).attr('procedure_name')
    })  
})  

1 个答案:

答案 0 :(得分:1)

在第二个版本中,您处于each回调中,但在第一个版本中,$(this)会立即进行评估,并且不会指向您想要的元素。顺便说一句,您也可以在this中正确使用each

$('.version-autocomplete').each(function() {      
    $(el).autocomplete({
        source: '/ajax/versions.json?procedure_name=' + $(this).attr('procedure_name')
    });
});