0

一連の質問があり、それらの上に簡単な進行状況カウンターを表示したいと考えています。以下のコードは正常に動作しますが、これを達成するためのより良い方法があるはずなので、誰かがリファクタリングについてアドバイスできるかどうか疑問に思っていました.

    var totalCount = $('#questions li').length,
        count = 1;
    $('.progress').html("Question " + count + " of " + totalCount);                 

    // Increment by 1 on each click
    $('.btn-next').click(function(){                        
        count ++ ;

        // remove current count
        $('.progress').empty();

        // drop in new count
        $('.progress').html("Question " + count + " of " + totalCount); 
    });

    // Decrease by 1 on each click
    $('.btn-prev').click(function(){
        count -- ;

        // remove current count
        $('.progress').empty();

        // drop in new count
        $('.progress').html("Question " + count + " of " + totalCount);
    });
4

1 に答える 1

2

そのコードはかなりの量を DRY できます。これを試して:

var totalCount = $('#questions li').length + 1, // add 1 as .length is 0 based
    count = 1;

$('.btn-next, .btn-prev').click(function(){                        
    count = $(this).hasClass('btn-next') ? count - 1 : count + 1;
    $('.progress').html("Question " + count + " of " + totalCount) 
});

とにかくempty()を置き換えるので、 は必要ないことに注意してください。html()

于 2013-08-21T14:46:31.890 に答える