0

次のコードで問題が発生しました。$(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')
    })  
})  
4

1 に答える 1

1

2 番目のバージョンではeachコールバックにいますが、最初のバージョンで$(this)はすぐに評価され、目的の要素を指していません。ちなみに、 でthis適切に使用することもできます。each

$('.version-autocomplete').each(function() {      
    $(el).autocomplete({
        source: '/ajax/versions.json?procedure_name=' + $(this).attr('procedure_name')
    });
});
于 2012-07-04T23:44:47.707 に答える