17

这应该很简单,但它不适合我。我想说:

如果这没有类“当前”并且如果身体类不等于“家”,那么这样做....

这是我正在尝试的(除其他外)无济于事。只有第一个条件有效。

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

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

}); 

我究竟做错了什么?谢谢!

更新澄清:

当以下条件为真时,我只想显示“.nav-overlay”:

  1. 您不在主页上(body class="home")并且
  2. “.nav1 > ul > li”类不等于“current”
4

2 回答 2

31

尝试$("body")&&

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

或者这样,它更短:

   if ( !$(this).is(".current") && !$("body").is(".home")  ){
     //...
于 2013-08-13T18:18:06.453 回答
4

如果body不是变量则将其作为 HTML 标记访问:添加引号。另外,ANDis&&而不是||(这意味着OR):

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

如果body是一个jQuery对象你可以直接做... && !$body.hashClass(...)

于 2013-08-13T18:17:55.977 回答