jQuery .slideToggle променя фона на класа 'x' при превключване

През последните около два часа се опитвах да изпълня част от кода и досега всичко работи с изключение на един ключов компонент.

В „header .menu a“ щракнете върху „navigation“ и трябва да се плъзне надолу и да покаже всички връзки. Също така искам фонът на класа „.menu“ да бъде зададен на „#3D3D3D“, когато „навигацията“ е изключена и след това да се превърне във фон „whitesmoke“.

Опитвам „addClass“ и „removeClass“ на манипулаторите на „.slideToggle“.

$( 'header .menu a' ).click( function() {
$( 'header nav' ).slideToggle( 'fast', function() {
    console.log('Toggle works');
   });
});

Съжалявам, ако това е тъп въпрос. Имам ограничен опит с jQuery и нямам търпение да се уча от вас. Ето Fiddle за js, css и html.

наздраве!


person Nocraze    schedule 21.07.2014    source източник
comment
проблемът е, че при събитието mouseleave на котвата, фонът се променя на whitesmoke, така че каквото и да правите, все още ще бъде whitesmoke, когато преместите мишката от котвата!   -  person Amin Jafari    schedule 21.07.2014


Отговори (1)


Ето, просто трябва да проверите дали плъзгачът е отворен или не използва променлива: http://jsfiddle.net/68zNp/12/

var opened=false;
// Code for header button -- menu.
 $( 'header .menu a' ).mouseenter( function() {
    console.log("Menu anchor entered");
    $( 'header .menu' ).css('background', '#3D3D3D');
    $( 'header .menu a' ).css('color', '#F8F7F7');
}).mouseleave( function() {
     if(!opened){
    console.log("'Menu anchor' left");
    $( 'header .menu' ).css('background', 'whitesmoke');
    $( 'header .menu a').css('color', '#3D3D3D');
     }
});

// Header toggle code
$( 'header .menu a' ).click( function() {
    console.log('Ouch, you clicked me!');
    if(!opened){
            opened=true;
        }
        else{
            opened=false;
        }
    $( 'header nav' ).slideToggle( 'fast', function() {
        console.log('Toggle works');
    });
});


// Code for header button -- down.
$( 'header .down a' ).mouseenter( function() {
    console.log("'Chevron down' entered");
    $( 'header .down' ).css('background', '#FF8B59');
    $( 'header .down a' ).css('color', '#F8F7F7');
}).mouseleave( function() {
    console.log("'Chevron down' left");
    $( 'header .down' ).css('background', 'whitesmoke');
    $( 'header .down a').css('color', '#3D3D3D');
});
person Amin Jafari    schedule 21.07.2014