2013-08-13 4 views
7

Это должно быть так просто, но это не работает для меня. Я хочу сказать:JQuery «если это и если это», то сделайте это

Если это не есть «ток» класса И если тело класса не равно «дом», то сделать это ....

Вот что я пытаюсь (между прочим) безрезультатно. Только первые условные работы.

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

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

}); 

Что я делаю неправильно? Спасибо!

ОБНОВЛЕНИЕ ДЛЯ CLARITY:

Я только хочу, чтобы показать «.nav-накладку», если выполняются следующие условия:

  1. Вы не на домашней странице (тело класса = „дома“) И
  2. класс ".nav1> уль> Li" не равно "ток"
+6

'' || означает "или". '&&' означает "и". –

+0

Вы говорите, что «класс не равен»; вы имеете в виду все значение атрибута класса? Это проверит для 1 определенного значения класса в коллекции классов. – asawyer

+0

По какой-то причине && работает только на главной странице. Поэтому, когда класс body = «home», он правильно игнорирует функцию. Однако, на внутренней странице, когда тело class = "anythingelse" и li class = "current" - тогда он не игнорирует функцию. – LBF

ответ

18

Попробуйте $("body") и &&:

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

Или этот путь, он короче:

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

ДА! Это сделал трюк. Спасибо! Я буду отмечать его как правильный ответ. – LBF

+0

@ Lindsay отлично, вы приветствуете! – Cherniv

3

Если body является не переменная, обращайтесь к ней как к тегу HTML: добавьте кавычки. Кроме того, AND является && вместо || (что означает OR):

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

Если body это объект JQuery вы можете сделать прямо ... && !$body.hashClass(...).

+0

'body' может быть переменной, однако не так много контекста. – asawyer

+0

@ theawyer Хорошая точка. –

+0

Спасибо. Я неправильно использовал || а также, как предположил @ Чернив, использование .is вместо .hasClass, казалось, исправить. – LBF

Смежные вопросы