2013-08-13 8 views
7

Questo dovrebbe essere così semplice, ma non funziona per me. Voglio dire:Jquery "Se questo e se quel" poi fare questo

Se questo non ha la "corrente" di classe e se la classe corpo non è uguale a "casa", poi fare questo ....

Ecco quello che sto cercando (tra l'altro) senza risultato. Solo le prime opere condizionali.

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

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

}); 

Cosa sto sbagliando? Grazie!

AGGIORNAMENTO PER CHIAREZZA:

Voglio solo mostrare ".nav-overlay" quando le seguenti condizioni sono vere:

  1. Tu non sei sulla homepage (corpo class = "casa") E
  2. La classe ".nav1> ul> li" non è uguale a "corrente"
+6

'' || mezzo "o". '&&' significa "e". –

+0

Stai dicendo "la classe non è uguale"; intendi l'intero valore dell'attributo class? Questo testerà per 1 valore di classe specifico nella raccolta di classi. – asawyer

+0

Per qualche motivo, && funziona solo sulla homepage. Quindi quando la classe del corpo = "casa", ignora correttamente la funzione. Tuttavia, in una pagina interna quando la classe body = "anythingelse" e la classe li = "current" - allora non ignora la funzione. – LBF

risposta

18

Prova $("body") e &&:

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

O in questo modo, è più breve:

if (!$(this).is(".current") && !$("body").is(".home") ){ 
    //... 
+0

SI! Questo ha fatto il trucco. Grazie! La contrassegnerò come la risposta corretta. – LBF

+0

@Lindsay fantastico, prego! – Cherniv

3

Se body non è una variabile, accedervi come tag HTML: aggiungi virgolette. Inoltre, è AND&& invece di || (che significa OR):

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

Se body è un oggetto jQuery si può fare direttamente ... && !$body.hashClass(...).

+0

'body' potrebbe essere una variabile, tuttavia non c'è molto contesto. – asawyer

+0

@asawyer Un buon punto. –

+0

Grazie. Stavo usando in modo errato il || inoltre, come suggerito da @Cherniv, l'uso di .is anziché di .hasClass sembrava risolvere il problema. – LBF

Problemi correlati