2014-02-14 2 views
0

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

$(window).scroll(function() { 
    $('#section6').each(function() { 
     var imagePos = $(this).offset().top; 
     var topOfWindow = $(window).scrollTop(); 

     if (imagePos < topOfWindow + 200) { 
      svgEstatua.start(); 
     } 
    }); 

}); 

$(window).scroll(function() { 
    $('#section2').each(function() { 
     var imagePos = $(this).offset().top; 
     var topOfWindow = $(window).scrollTop(); 

     if (imagePos < topOfWindow + 225) { 
      svgBrain.start(); 
     } 
    }); 

}); 
// must 5 

массив:

var groupSvg = [svgManos, svgSuper, svgInnovation, svgEstatua, svgBrain, svgBalanza]; 
+5

$ ("# someid"). Каждый не имеет смысла. –

ответ

0

Выньте общий код и сделать что-то вроде этого

function common(selector, svgObject, offset) { 
    $(selector).each(function() { 
     var imagePos = $(this).offset().top, 
      topOfWindow = $(window).scrollTop(); 

     if (imagePos < topOfWindow + offset) { 
      svgObject.start(); 
     } 
    }); 
} 

$(window).scroll(function() { 
    common('#section6', svgEstatua, 200); 
}); 

$(window).scroll(function() { 
    common('#section2', svgBrain, 225); 
}); 

Вы можете использовать массив или объект в цикле, хотя.

+0

не нужно, каждый при выборе элемента по id. –

+0

Это общее, если 'selector' не является идентификатором, а, например,' class', или если он объединяет селектор для выбора нескольких идентификаторов. Я просто использую пример OP. – Xotic750

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