6

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

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();
}

为什么我不能使用(这个)?

4

6 回答 6

29

点不是类名的一部分。它仅用于 CSS/jQuery 选择器表示法。试试这个:

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

if$(this)引用该锚点,您必须将其更改为$('#navigation a')as well,因为 if 条件没有 jQuery 回调范围。

于 2010-11-17T18:58:29.507 回答
3

或者,您可以使用:

if ($('#navigation a').is(".active")) {
    $(this).parent().addClass("active");
}
于 2010-11-17T18:59:46.373 回答
0

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

另外,hasClassaddClass采用classnames,而不是选择器。
因此,您不应包含..

于 2010-11-17T18:58:52.190 回答
0

你不能使用$(this),因为 jQuery 不知道它在那里。你似乎把事情复杂化了。你可以做到$('#content h1.aktiv').hide()。没有理由测试该类是否存在。

于 2010-11-17T22:53:22.690 回答
0

不起作用的原因是因为this在 if 语句中没有特定含义,您将不得不返回到this定义的范围级别(函数)。

例如:

$('#element1').click(function() {
    console.log($(this).attr('id')); // logs "element1"

    if ($('#element2').hasClass('class')) {
        console.log($(this).attr('id')); // still logs "element1"
    }
});
于 2010-11-17T22:54:14.553 回答
0

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

if (jQuery('.dropdown-menu li').hasClass('active')) {
    jQuery('.current-menu-parent').addClass('current-menu-item');
}
于 2017-02-11T00:37:29.100 回答