代码之家  ›  专栏  ›  技术社区  ›  curly_brackets

如果hasClass,则将类添加到父级

  •  6
  • curly_brackets  · 技术社区  · 14 年前

    原岗位: 为什么这个简单的脚本不起作用?

    if ($('#navigation > ul > li > ul > li > a').hasClass('.active')) {
        $(this).parent().parent().parent().addClass(".active");
    }
    

    编辑:

    这不会隐藏h1:

    if ($('#content h1').hasClass('aktiv')) {
        $(this).hide();
    }
    

    只有这样才能:

    if ($('#content h1').hasClass('aktiv')) {
        $('#content h1').hide();
    }
    

    为什么我不能用这个?

    6 回复  |  直到 14 年前
        1
  •  29
  •   BoltClock    14 年前

    点不是类名的一部分。它只在css/jquery选择器表示法中使用。试试这个:

    if ($('#navigation a').hasClass('active')) {
        $(this).parent().addClass('active');
    }
    

    如果 $(this) 指的是那个锚,你必须把它改成 $('#navigation a') 因为if条件没有jquery回调作用域。

        2
  •  2
  •   Marcus Whybrow    14 年前

    或者,您可以使用:

    if ($('#navigation a').is(".active")) {
        $(this).parent().addClass("active");
    }
    
        3
  •  0
  •   SLaks    14 年前

    您可能想将条件更改为 if ($(this).hasClass('active'))

    也, hasClass addClass 类名 ,不是选择器。
    因此,不应包括 . .

        4
  •  0
  •   Bill Criswell    14 年前

    你不能用 $(this) 因为jquery不知道它在那里。你似乎过于复杂了。你可以的 $('#content h1.aktiv').hide() . 没有理由测试类是否存在。

        5
  •  0
  •   Marcus Whybrow    14 年前

    不起作用的原因是 this 如果在if语句中没有特定的含义,则必须返回到范围级别, 定义(函数)。

    例如:

    $('#element1').click(function() {
        console.log($(this).attr('id')); // logs "element1"
    
        if ($('#element2').hasClass('class')) {
            console.log($(this).attr('id')); // still logs "element1"
        }
    });
    
        6
  •  0
  •   Edgar Quintero    8 年前

    如果有人在使用WordPress,你可以使用如下内容:

    if (jQuery('.dropdown-menu li').hasClass('active')) {
        jQuery('.current-menu-parent').addClass('current-menu-item');
    }