Просто для того, чтобы заставить его работать, у меня есть страница часто задаваемых вопросов с jQuery, которая скрывает все разделы, разделенные .faqSection
, а также уникальный идентификатор - #faqSection1
, #faqSection2
и т. Д. Затем я просматриваю плагин Waypoint, который определяет, когда смещение данного div составляет 80% окна просмотра.Рефакторинг jQuery С селектором и индексом
Перед рефакторинга, код выглядит следующим образом:
jQuery('.faqSection').css('opacity', 0);
jQuery('#faqSection2').waypoint(function() {
jQuery('#faqSection2').delay(800).queue('fx', function() { jQuery(this).addClass('animated fadeInDown'); });
}, { offset: '80%' });
jQuery('#faqSection3').waypoint(function() {
jQuery('#faqSection3').delay(800).queue('fx', function() { jQuery(this).addClass('animated fadeInDown'); });
}, { offset: '80%' });
jQuery('#faqSection4').waypoint(function() {
jQuery('#faqSection4').delay(800).queue('fx', function() { jQuery(this).addClass('animated fadeInDown'); });
}, { offset: '80%' });
jQuery('#faqSection5').waypoint(function() {
jQuery('#faqSection5').delay(800).queue('fx', function() { jQuery(this).addClass('animated fadeInDown'); });
}, { offset: '80%' });
jQuery('#faqSection6').waypoint(function() {
jQuery('#faqSection6').delay(800).queue('fx', function() { jQuery(this).addClass('animated fadeInDown'); });
}, { offset: '80%' });
Как вы можете видеть, это просто число на конце, который изменяется. Я хотел реорганизовать именно по этой причине, плюс хочу разместить другое количество div.
Так что я попытался это:
jQuery('.faqSection').css('opacity', 0);
for(var index = 0;
index < $('.faqSection').length; index++) {
jQuery('#faqSection' + index).waypoint(function() {
jQuery('#faqSection' + index).delay(800).queue('fx', function() { jQuery(this).addClass('animated fadeInDown'); });
}, { offset: '80%' });
}
Разве это не возможно сделать селектор плюс индекс, или у меня что-то другое неправильное в моем синтаксисе и/или думать?
Это не огромная сделка, но внутри вашего обратного вызова waypoint, почему бы не использовать 'this.element', а не снова выбрать # faqSection1 или какой бы? Вы можете использовать обычный обработчик, начиная с: jQuery (this.element) .delay (800) .queue ('fx', function() { – Aaron