2011-05-13 3 views
0

Il me manque un dernier 1% d'un élément de bas de page sur lequel je travaille.jQuery Logique des événements/ordre des opérations

La logique de ce que je veux faire devrait être évidente: je veux que le mot EXPAND apparaisse lorsque je survole le pied de page, et je veux que le mot HIDE montre quand le pied de page est étendu.

J'ai tout ce qui fonctionne à l'exception de la partie CACHER lorsque le pied de page est déplié - lorsque je m'éloigne du bloc de pied de page, il affiche de nouveau le mot EXPAND. Je veux arrêter cet événement stationnaire. Ou du moins je pense que c'est ce que je veux faire.

=>JSFiddle vous montrera de quoi je parle.

apprécie l'aide,

Terry

$(document).ready(function() { 
    $("#shows").click(function() { 
     $('footer').toggleClass("highlight"); 
     $('#shows').text('Hide'); 
    }); 
    $("footer").hover(
     function() { 
     $('#shows').text('+Expand'); 
     }, 
     function() { 
     $('#shows').text('Shows'); 
     } 
    );  
}); 

Répondre

1

Je pense que ce que vous voulez faire est de changer le texte de vol stationnaire de #shows selon que le pied de page ou non a la classe « highlight ». J'ai changé votre gestionnaire de vol stationnaire à:

$("footer").hover(
    function() { 
     $('#shows').text($('footer').hasClass("highlight") ? "Hide" : "+Expand"); 
    }, 
    function() { 
     $('#shows').text('Shows'); 
    } 
); 

Modified Fiddle

+0

Sweet !! Exactement juste. Est-ce que '$ ('# shows'). Text ($ ('footer'). HasClass (" highlight ")?" Cacher ":" + Expand ");' une sorte de raccourci if-statement? IE: Si le pied de page a une surbrillance de classe, utilisez "CACHER" sinon utilisez "EXPAND". Quelque chose comme ca? – saltcod

+1

Correct. C'est ce qu'on appelle un opérateur ternaire. Vous pouvez lire ici http://www.gsdesign.ro/blog/how-to-use-ternary-operator-in-javascript/ – InvisibleBacon

+0

Wow. C'est extrêmement utile. L'ancien opérateur ternaire. Impressionnant. Merci beaucoup. – saltcod

1

Qu'est-ce que vous cherchez appelle stratégiquement unbind. Cela fonctionne dans votre violon:

function setNotExpanded(elem) { 
    $(elem).unbind('mouseenter mouseleave').hover(
     function() { 
     $('#shows').text('+Expand'); 
     }, 
     function() { 
     $('#shows').text('Shows'); 
     } 
    ); 
} 

function setExpanded(elem) { 
    $(elem).unbind('mouseenter mouseleave'); 
} 

$(document).ready(function() { 

    $("#shows").click(function() { 
     if ($('footer').hasClass('highlight')) { 
     $('#shows').text('Shows'); 
     setNotExpanded('footer'); 
     } else {     
      $('#shows').text('Hide'); 
      setExpanded('footer'); 
     } 
     $('footer').toggleClass("highlight"); 
    });    

    setNotExpanded('footer'); 

}); 
+0

Merci beaucoup pour cela. Je pensais à l'origine que '.unbind()' pourrait être ce que je cherchais. – saltcod