jquery中的addClass不起作用

时间:2014-01-01 02:46:21

标签: jquery addclass

不确定这里有什么问题。所有其他代码工作正常并且已经永远但是现在我只是尝试将另一个类添加到您单击的元素并且该函数仍然正常工作它似乎忽略了我的.addClass()。

$('.item-main-section, .item-status').click( function () {
    var slideHeight = $(this).parent().children('.item-slide-section').height();

    //Not Doing Anything 

    if ($('item-slide-section').hasClass('current-open')) {
        $('item-slide-section').removeClass('current-open');
    }
    $(this).parent().children('item-slide-section').addClass('current-open');

    //Not Doing Anything ^^^^

        if ($(this).parent().height() > 50) {
            $(this).parent().animate({height: '50px'}, 300);
            $(this).parent().children('item-slide-section').animate({bottom: '0px'}, 300);
        } else {
            $(this).parent().animate({height: slideHeight + 50 + 'px'}, 300);
            $(this).parent().children('item-slide-section').animate({bottom: slideHeight - 5 + 'px'}, 300);
            $(this).parent().siblings('.item-wrapper').animate({height: '50px'}, 300);
            $(this).parent().siblings('.item-wrapper').children('item-slide-section').animate({bottom: '0px'}, 300);
        }
    });

2 个答案:

答案 0 :(得分:5)

您忘记了选择器中的.

这里:

    $(this).parent().children('.item-slide-section').addClass('current-open');

在这里:

if ($('.item-slide-section').hasClass('current-open')) {
    $('.item-slide-section').removeClass('current-open');
}

一般来说,像这样的问题不适合这个网站。

考虑下次在问题行(或其下方)上方使用debugger;语句并检查选择器是否实际匹配任何内容。

如果你这样做了,你可以看到选择的长度为0,因此,元素没有子元素。

所以基本上,下次你遇到这类问题时,先问SO:

  • 在有问题的行或代码上方,放置debugger;语句。如果您不知道如何使用调试器逐步执行代码,请考虑阅读http://discover-devtools.codeschool.com/
  • 将复杂的陈述分解为较小的陈述,并在它们之间使用console.log来验证您认为您对环境的了解。
  • 经常使用REPL(控制台)自行选择并确保它们符合您认为匹配的内容。

答案 1 :(得分:0)

您似乎缺少一个类选择器 - 您使用的是element selector item-slide-section而不是class selector .item-slide-section

$(this).parent().children('.item-slide-section').addClass('current-open');

另一点是$(this).parent().children()$(this).siblings()相同,请尝试

$(this).siblings('.item-slide-section').addClass('current-open');

同样删除当前打开的类可以改为

$('.item-slide-section.current-open').removeClass('current-open');