web-dev-qa-db-fra.com

Jquery "si ceci et si cela" alors faites ceci

Cela devrait être si simple, mais cela ne fonctionne pas pour moi. Je veux dire:

Si cela n'a pas la classe "actuelle" ET si la classe body n'est pas égale à "home", alors faites ceci ....

Voici ce que j'essaie (entre autres) en vain. Seuls les premiers travaux conditionnels.

$(".nav1 > ul > li").mouseleave(function() {

    if ( (!$(this).hasClass("current")) || (!$(body).hasClass("home"))  ){
         $(this).find(".nav-overlay").show();   
    }

}); 

Qu'est-ce que je fais mal? Je vous remercie!

MISE À JOUR POUR LA CLARTÉ:

Je souhaite afficher ".nav-overlay" uniquement lorsque les conditions suivantes sont remplies:

  1. Vous n'êtes pas sur la page d'accueil (body class = "home") ET
  2. La classe ".nav1> ul> li" n'est pas égale à "courant"
12
LBF

Essayez $("body") et &&:

   if ( (!$(this).hasClass("current")) && (!$("body").hasClass("home"))  ){
    //...

Ou de cette façon, il est plus court:

   if ( !$(this).is(".current") && !$("body").is(".home")  ){
     //...
25
Cherniv

Si body est pas une variable, accédez-y comme une balise HTML: ajoutez des guillemets. De plus, AND est && Au lieu de || (Cela signifie OR):

if (!$(this).hassClass("current") && !$("body").hasClass("home")) {
    $(this).find(".nav-overlay").show();
}

Si body est un objet jQuery, vous pouvez faire directement ... && !$body.hashClass(...).

4
Ionică Bizău