【问题标题】:Jquery "if this and if that" then do thisJquery“如果这个和如果那个”然后这样做
【发布时间】: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”:

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

【问题讨论】:

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

标签: jquery conditional-statements


【解决方案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 似乎可以解决它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多