Jquery“如果这个和如果那个”然后这样做

Posted

技术标签:

【中文标题】Jquery“如果这个和如果那个”然后这样做【英文标题】:Jquery "if this and if that" then do this 【发布时间】:2013-08-15 11:51:32 【问题描述】:

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

如果 this 没有“current”类并且如果 body 类不等于“home”,则执行此操作....

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

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

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

); 

我做错了什么?谢谢!

澄清更新:

我只想在满足以下条件时显示“.nav-overlay”:

    你不在首页(body class="home") 和 “.nav1 > ul > li”类不等于“current”

【问题讨论】:

|| 表示“或”。 && 表示“和”。 你说的是“类不等于”;你的意思是类属性的整个值?这将测试类集合中的 1 个特定类值。 出于某种原因,&& 仅适用于主页。所以当body class="home"时,它正确地忽略了这个函数。但是,在正文 class="anythingelse" 和 li class="current" 的内部页面上,它不会忽略该功能。 【参考方案1】:

试试$("body")&&

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

或者这样,更短:

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

【讨论】:

是的!这成功了。谢谢!我会把它标记为正确答案。【参考方案2】:

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

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

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

【讨论】:

body 可能是一个变量,但没有太多上下文。 谢谢。我错误地使用了 ||而且,正如@Cherniv 建议的那样,使用 .is 而不是 .hasClass 似乎可以解决它。

以上是关于Jquery“如果这个和如果那个”然后这样做的主要内容,如果未能解决你的问题,请参考以下文章

jquery获取图片的真实大小

jQuery - 检查标签的内容是不是等于 sometext 然后做一些事情

jquery-ui 用 simpleform 自动完成

能不能做一个html页面,然后按钮的功能用python实现

使用 jQuery 查找选择器

jquery.width 在图像上返回 0