nur um daran zu arbeiten, ich habe eine FAQ-Seite mit jQuery, die alle divs mit .faqSection
sowie eine eindeutige ID eingestuft versteckt - #faqSection1
, #faqSection2
usw.. Ich gehe dann mit dem Wegpunkt-Plugin durch, das erkennt, wenn der Offset eines gegebenen Div bei 80% des Viewports liegt.Refactoring jQuery Mit einem Selector und Index
Vor Refactoring sieht der Code wie folgt aus:
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%' });
Wie Sie sehen, es ist nur die Zahl am Ende ändert sich. Ich wollte aus genau diesem Grund umgestalten und möchte eine andere Anzahl von Divs unterbringen.
So habe ich versucht, dies:
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%' });
}
Ist es nicht möglich, einen Selektor Plus Index zu tun, oder muss ich etwas anderes falsch in meiner Syntax und/oder zu denken?
Es ist keine große Sache, aber in Ihrem Wegpunkt Callback, warum verwenden Sie nicht this.element, anstatt wieder # faqSection1 oder was auch immer? Sie können sogar einen allgemeinen Handler verwenden, beginnend mit: jQuery (this.element) .delay (800) .queue ('fx', function() { – Aaron