2013-12-04 3 views
0

Может кто-нибудь помочь мне оптимизировать этот код javascript? Я вижу повторение. Могу ли я избежать повторения?Оптимизировать код javascript [повторяет]

Спасибо!

var billboardTimer; 
var billboardCurrent = 0; 
var billboardSize = $('.billboard li').size(); 
$('.billboard li').on('click', function(){ 
    clearInterval(billboardTimer); 
    $('.billboard li').removeClass('active'); 
    $(this).addClass('active'); 
    $('.billboard .img-large').removeClass('current').removeAttr('style'); 
    $('.billboard .img-large').eq($(this).index()).animate({'opacity': 1}).show(); 
}); 
$('.billboard li:first').click(); 
billboardTimer = setInterval(billboardNext, 2000); 
function billboardNext(){ 
    billboardCurrent++; 
    if (billboardCurrent == billboardSize) {billboardCurrent = 0;} 
    $('.billboard .img-large').removeClass('current').removeAttr('style'); 
    $('.billboard .img-large').eq(billboardCurrent).animate({'opacity': 1}).show(); 
    $('.billboard li').removeClass('active'); 
    $('.billboard li').eq(billboardCurrent).addClass('active'); 
} 

Ссылка jsfiddle.net

+7

http://codereview.stackexchange.com? – Sirko

+0

Не совсем ответ на ваш вопрос, но если структура html статична, я бы поместил $ ('. Billboard li') и $ ('. Billboard .img-large') в переменные, чтобы избежать повторного запроса снова и снова , – Davy

+0

Html не является статическим. – user2119316

ответ

0

Может быть что-то вроде этого?

var billboardTimer; 
var billboardCurrent = 0; 
var billboardSize = $('.billboard li').size(); 

$('.billboard li').on('click', function(){ 
    clearInterval(billboardTimer); 
    setActive($(this).index()); 
}); 
$('.billboard li:first').click(); 
billboardTimer = setInterval(function() { 
    setActive(billboardCurrent = (billboardCurrent + 1) % billboardSize); 
}, 2000) 
function setActive(index) { 
    $('.billboard .current').animate({'opacity': 0}).removeClass('current');; 
    $('.billboard .img-large').eq(index).animate({ 'opacity': 1}).addClass('current'); 
    $('.billboard li').removeClass('active').eq(index).addClass('active'); 
} 

http://jsfiddle.net/9dxcc/2/

+0

Вот что я искал. – user2119316

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