0

ajax レスポンスに基づいて一連の div をフェードアウトしたいと考えています。このコードは、私が望んでいたことをしていません。

私は何を間違っていますか?

$('.view_result').click(function() {
    $('.result_bar').fadeIn();
    var set = $('.result_bar');
    for(var i = 0; i < set.length; i++) {
        $.post('get_votes.php', {'id':$(set[i]).attr('name')}, function(data) {
            $('.result_bar')[i].fadeOut(); //--> Didn't Work
            $(set)[i]).fadeOut(); //--> Didn't Work
            set[i].fadeOut();// --> Didn't Work
        }); 

    }
return false;
});
4

1 に答える 1

2

i問題は、コールバック関数でのクロージャー変数の使用です。

あなたの場合setは jQuery ラッパーであるため、ループを使用する代わりに.each()を使用して反復できますfor

$('.view_result').click(function () {
    $('.result_bar').fadeIn();
    var set = $('.result_bar');

    set.each(function(idx, el){
        $.post('get_votes.php', {
            'id': $(el).attr('name')
        }, function (data) {
            $(el).fadeOut(); //--> Didn't Work
        });
    })
    return false;
});
于 2013-09-22T09:06:50.600 に答える