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“如果这个和如果那个”然后这样做的主要内容,如果未能解决你的问题,请参考以下文章