为什么这个jquery removeClass不起作用?

时间:2014-04-15 10:32:14

标签: jquery

我有一个函数,它在页面加载时将一个类添加到列表的第二个元素:

function top_view() {
    var elem = $('#sglsPosts .sglsPostContainer:nth-child(2)');
    if (elem.is(':visible')) {
        elem.addClass('topView');
    }
}
top_view();

我的检查元素显示已添加该类:

<nav>
    <div id="moarUp"></div>
    <div class="sglsPostContainer cpHighlight1 topView"></div>
</nav>

然后,点击,我想删除该类,所以我尝试了这个:

$('#moarUp').on('click', function () {
    var elem = $('#sglsPosts .sglsPostContainer:nth-child(2)');
    elem.removeClass('.topView');
});

console.log var elem的输出,它说:

0: div.sglsPostContainer.cpHighlight1.topView
context: document
length: 1
prevObject: n.fn.init[1]
selector: "#sglsPosts .sglsPostContainer:nth-child(2)"
__proto__: Object[0]

这样对吗?

由于某些原因,这不起作用,有什么建议吗?

3 个答案:

答案 0 :(得分:1)

不要将选择器用作参数,而是使用类的名称。变化

elem.removeClass('.topView');

elem.removeClass('topView');

答案 1 :(得分:1)

除了从要删除的类的名称中删除.之外。您还可以使用 .next()

缩短代码
$('#moarUp').on('click', function () {
    $(this).next().removeClass('topView');
});

答案 2 :(得分:0)

你不应该添加。 removeClass上的选择器

只使用类名而不应该有问题。

elem.removeClass('topView');

Seee https://api.jquery.com/removeClass/了解更多详情