2013-08-13 23 views
7

Điều này nên đơn giản như vậy, nhưng nó không làm việc cho tôi. Tôi muốn nói:Jquery "nếu điều này và nếu" sau đó làm điều này

Nếu điều này không có lớp "hiện tại" và nếu lớp cơ thể không bằng "nhà", sau đó làm điều này ....

Dưới đây là những gì tôi đang cố gắng (trong số những thứ khác) vô ích. Chỉ những công trình có điều kiện đầu tiên.

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

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

}); 

Tôi đang làm gì sai? Cảm ơn bạn!

CẬP NHẬT CHO CLARITY:

Tôi chỉ muốn hiển thị ".nav-overlay" khi các điều kiện sau là đúng:

  1. Bạn không phải trên trang chủ (cơ thể class = "nhà") VÀ
  2. Các ".nav1> ul> li" lớp không bằng "hiện tại"
+6

'||' có nghĩa là "hay". '&&' có nghĩa là "và". –

+0

Bạn đang nói "lớp học không bằng nhau"; bạn có nghĩa là toàn bộ giá trị của thuộc tính lớp? Điều này sẽ kiểm tra cho 1 giá trị lớp cụ thể trong bộ sưu tập các lớp. – asawyer

+0

Vì một số lý do, && chỉ hoạt động trên trang chủ. Vì vậy, khi lớp cơ thể = "nhà", nó chính xác bỏ qua các chức năng. Tuy nhiên, trên một trang bên trong khi lớp body = "anyelse" và lớp li = "current" - thì nó không bỏ qua hàm đó. – LBF

Trả lời

18

Hãy thử $("body")&&:

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

Hoặc cách này, nó là ngắn hơn:

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

CÓ! Điều này đã làm các trick. Cảm ơn bạn! Tôi sẽ đánh dấu nó là câu trả lời đúng. – LBF

+0

@Lindsay tuyệt vời, bạn hoan nghênh! – Cherniv

3

Nếu bodykhông biến, truy cập nó dưới dạng thẻ HTML: thêm dấu ngoặc kép. Ngoài ra, AND&& thay vì || (có nghĩa là OR):

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

Nếu body là một đối tượng jQuery bạn có thể làm trực tiếp ... && !$body.hashClass(...).

+0

'body' có thể là một biến, không có nhiều bối cảnh mặc dù. – asawyer

+0

@asawyer Điểm tốt. –

+0

Cảm ơn bạn. Tôi đã sử dụng sai || và cũng như, như @Cherniv đã đề xuất, sử dụng .is thay vì .hasClass, dường như sửa chữa nó. – LBF