2013-08-13 11 views
7

To powinno być takie proste, ale nie działa dla mnie. Chcę powiedzieć:Jquery "jeśli to i jeśli to", zrób to

Jeśli to nie mają „prąd” Klasa i jeśli klasa ciało nie równa się „do domu”, to zrobić ....

Oto co usiłuję (między innymi) bezskutecznie. Tylko pierwsze prace warunkowe.

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

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

}); 

Co robię źle? Dziękuję Ci!

UPDATE dla jasności:

Chcę tylko pokazać ".nav-overlay", gdy spełnione są następujące warunki:

  1. Nie jesteś na stronie głównej (body class = "Home") I
  2. Klasa ".nav1> ul> li" nie równa się "prąd"
+6

'' || oznacza "lub". '&&' oznacza "i". –

+0

Mówisz "klasa nie równa się"; masz na myśli całą wartość atrybutu klasy? Spowoduje to przetestowanie dla 1 określonej klasy wartości w zbiorze klas. – asawyer

+0

Z jakiegoś powodu && działa tylko na stronie głównej. Tak więc, gdy klasa body = "home", poprawnie ignoruje funkcję. Jednak na stronie wewnętrznej, gdy klasa body = "anythingelse" i klasa li = "current" - wtedy nie ignoruje funkcji. – LBF

Odpowiedz

18

Spróbuj $("body") i &&:

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

Albo w ten sposób, że jest krótszy:

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

TAK! To załatwiło sprawę. Dziękuję Ci! Zaznaczę to jako poprawną odpowiedź. – LBF

+0

@Sindsay, witamy! – Cherniv

3

Jeśli body jest nie zmienna, uzyskaj dostęp do niej jako znacznika HTML: dodaj cytaty. Również AND jest && zamiast || (czyli OR):

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

Jeśli body jest obiektem jQuery można zrobić bezpośrednio ... && !$body.hashClass(...).

+0

'body' może być zmienną, ale nie ma zbyt wiele kontekstu. – asawyer

+0

@asawyer Dobra uwaga. –

+0

Dziękuję. Niepoprawnie użyłem || a także, jak sugerował @Cherniv, użycie .is zamiast .hasClass, wydawało się to naprawić. – LBF

Powiązane problemy