Previous Slide 2


#1

Hi everyone, I copied (at least I think I did) exactly the code of the arrow-next code. I can't find out what's wrong with it.

var main = function () {
$('.dropdown-toggle').click(function(){
$('.dropdown-menu').toggle();
});

$('.arrow-next').click(function() {
    var currentSlide = $('.active-slide');
    var nextSlide = currentSlide.next();

    var currentDot = $('.active-dot');
    var nextDot = currentDot.next();

    if (nextSlide.length == 0) {
    nextSlide = $('.slide').first();
    nextDot = $('.dot').first();
    }

    currentSlide.fadeOut(600).removeClass('.active-slide');
    nextSlide.fadeIn(600).addClass('.active-slide');

    currentDot.removeClass('.active-dot');
    nextDot.addClass('.active-dot');

    $('.arrow-prev').click(function() {
    var currentSlide = $('.active-slide');
    var prevSlide = currentSlide.prev();

    if (nextSlide.length == 0) {
    prevSlide = $('.slide').last();

    }

    currentSlide.fadeOut(600).removeClass('.active-slide');
    prevSlide.fadeIn(600).addClass('.active-slide');

    }

    });

$(document).ready(main);

Can anyone help me?

`


#2

@phoenixace,

The structure of the =main= function should look like

var main = function() {
     //Begin of =main= FUNCTION-BODY
        $('.dropdown-toggle').click(function(){
              $('.dropdown-menu').toggle();
        });

        $('.arrow-next').click( function() {
             //code which gets executed when =click=ed
        });
        $('.arrow-prev').click( function() {
             //code which gets executed when =click=ed
        });
     //End of =main= FUNCTION-BODY
};

And the =main= function should be executed when the document is fully loaded and READY

$(document).ready( main );

======================================

+++++ flipboard the next && prev steps
You will have to keep a strict order in your code.....

s t e p s - - f o r - - n e x t S l i d e
-1
-1a create a selection of nextSlide (2 steps, capture 'active-slide, capture next() slide )'
-1b create a selection of nextDot
-2 check if selection of nextSlide is EMPTY
-2a if EMPTY change nextSlide selection to first slide
-2b and change nextDot selection to first Dot
-3 swap -active-slide- and -active-dot- class from current to next
Step3 is done by

   currentSlide.fadeOut(600).removeClass('active-slide');
   nextSlide.fadeIn(600).addClass('active-slide');
   currentDot.removeClass('active-dot');
   nextDot.addClass('active-dot');

s t e p s - - f o r - - p r e v S l i d e
-1
-1a create a selection of prevSlide
-1b create a selection of prevDot
-2 check if selection of prevSlide is EMPTY
-2a if EMPTY change prevSlide selection to last slide
-2b and change prevDot selection to last Dot
-3 swap -active-slide- and -active-dot- class from current to prev
Step3 is done by

    currentSlide.fadeOut(600).removeClass('active-slide');
    prevSlide.fadeIn(600).addClass('active-slide');
    currentDot.removeClass('active-dot');
    prevDot.addClass('active-dot');

+++++++++++++++++++++++++++++++++++++
++ jquery length explained AND DOM pictures of flipboard
https://www.codecademy.com/forum_questions/5615308ab62548021c0000e4


#3

I'm Sorry, I don't get it, I really don't get it.

I changed my code (there was a next that had to be prev) I added a }); that was missing for finishing arrow-next and then it complained about this:

currentSlide.fadeOut(600).removeClass('active-slide');
nextSlide.fadeIn(600).addClass('active-slide');

I literally copied this last code, I checked it double, I get the same response : Oops, try again. Remember to fade out the current slide and remove the 'active-slide' class.

Please help


#4

This is my code now

var main = function() {
$('.dropdown-toggle').click(function(){
$('.dropdown-menu').toggle();
});

$('.arrow-next').click(function() {
    var currentSlide = $('.active-slide');
    var nextSlide = currentSlide.next();

    var currentDot = $('.active-dot');
    var nextDot = currentDot.next();

    if (nextSlide.length == 0) {
    nextSlide = $('.slide').first();
    nextDot = $('.dot').first();
    }

    currentSlide.fadeOut(600).removeClass('.active-slide');
    nextSlide.fadeIn(600).addClass('.active-slide');

    currentDot.removeClass('.active-dot');
    nextDot.addClass('.active-dot');

});

$('.arrow-prev').click(function() {
    var currentSlide = $('.active-slide');
    var prevSlide = currentSlide.prev();

    if (prevSlide.length == 0) {
    prevSlide = $('.slide').last();

    }

    currentSlide.fadeOut(600).removeClass('active-slide');
    prevSlide.fadeIn(600).addClass('active-slide');

});

$(document).ready(main);


#5

You are missing the code for the .arrow-next click function. The code is as follows:

$('.arrow-next').click(function() {
var currentSlide = $('.active-slide');
var nextSlide = currentSlide.next();

Hope that helps and let me know if it works!


#6

Sorry! I did not see that you had the .arrow-next click function. I think the order of your code is wrong. It should be like this:

var main = function() {
    $('.dropdown-toggle').click(function() {
        $('.dropdown-menu').toggle();
    });
    
    $('.arrow-next').click(function() {
        var currentSlide = $('.active-slide');
        var nextSlide = currentSlide.next();
        
        
        if(nextSlide.length == 0) {
            nextSlide = $('.slide').first();
        }
        
        currentSlide.fadeOut(600).removeClass('active-slide');
        nextSlide.fadeIn(600).addClass('active-slide');
        
        var currentDot = $('.active-dot');
        var nextDot = currentDot.next();
        
        if(nextDot.length == 0) {
            nextDot = $('.dot').first();
        }
        
        currentDot.removeClass('active-dot');
        nextDot.addClass('active-dot');
        
    });
    
    $('.arrow-prev').click(function() {
        var currentSlide = $('.active-slide');
        var prevSlide = currentSlide.prev();
        
        if(prevSlide.length == 0) {
            prevSlide = $('.slide').last();
        }
        
        currentSlide.fadeOut(600).removeClass('active-slide');
        prevSlide.fadeIn(600).addClass('active-slide');
    });
};

$(document).ready(main);

#7

Thanks, you, it works fine now!


#8

No problem! Happy coding!


#9

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.