jQuery addClass()/ removeClass()不起作用

时间:2013-08-26 15:48:39

标签: javascript jquery

<ul>
    <li class="selected"></li>
    <li></li>
    <li></li>
</ul>

这是我的HTML。我现在使用的选择器是:

    $("ul li:eq(0)").removeClass('selected');
    $("ul li:eq(1)").addClass('selected');

问题是我无法在这些元素中添加或删除“选定”类。 html和jquery都很简单,我能找到的很多例子都做了同样的事情,包括官方的jQuery文档。 (脚本在body标签之前加载,如果重要的话)

为什么我不能删除和添加这样的类?

整个html页面here

3 个答案:

答案 0 :(得分:6)

可能是因为您忘记添加$(document).ready(),还要确保添加了jquery.min.js文件

$(document).ready( function () {
    $("ul li:eq(0)").removeClass('selected');
    $("ul li:eq(1)").addClass('selected');
});

答案 1 :(得分:2)

代码看起来正确,问题必须在其他地方。如何调试:

  1. 查看选择器匹配的元素数量:

    console.log($("ul li:eq(1)").length);
    

    如果看到0,则选择器与任何内容都不匹配。

  2. 哪个元素匹配?

    console.log($("ul li:eq(1)")[0]);
    

    大多数浏览器都允许检查控制台中的元素。

  3. 典型的问题是您的代码在元素存在之前执行。在简单的情况下,您只需在DOM准备好后运行代码:

    $(function () {
        ...DOM is now ready...
    });
    

    但有时,其他脚本会创建元素。如果是这种情况,您需要告诉我们您使用哪些框架和脚本来构建/操作DOM。

    相关:

答案 2 :(得分:0)

$("ul li:eq(0)").removeClass('selected');
$("ul li:eq(1)").addClass('selected');

适合我(http://jsfiddle.net/orlando/rhtqA/

但是你需要等到DOM准备用jquery做什么

$(function () {
    $("ul li:eq(0)").removeClass('selected');
    $("ul li:eq(1)").addClass('selected');
});