2013-08-21 4 views
0

У меня есть набор вопросов и вы хотите увидеть простую индикацию прогресса над ними. Код ниже работает нормально, но мне было интересно, может ли кто-нибудь посоветовать рефакторинг, поскольку theres должен стать лучшим способом достижения этого.Простой подсчет с использованием jQuery

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); 
    }); 

ответ

2

Вы можете сушить этот код довольно много. Попробуйте это:

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() в любом случае.

+0

Привет Рори Когда я бегу сценарий это выход

Question NaN of 17
Любая идея, что NaN это? –

+0

'NaN' означает, что результат не является числом - обычно из попытки выполнить математическую операцию над строкой и целым числом. Можете ли вы поместить свой код в http://jsfiddle.net, чтобы я мог видеть, что происходит? –

+0

http://jsfiddle.net/bobby_bob/k4Ptg/4/ –

Смежные вопросы