2013-08-26 97 views
1
<ul> 
    <li class="selected"></li> 
    <li></li> 
    <li></li> 
</ul> 

这是我的html。我现在使用的选择器是:jQuery addClass()/ removeClass()不工作

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

问题是我无法从这些元素中添加或删除'selected'类。 html和jquery都非常简单,我可以找到的尽可能多的例子都以同样的方式完成,包括官方的jQuery文档。 (脚本在body标签之前加载,如果它很重要)

为什么我不能删除并添加类?

整个HTML页面here

+6

可以,这个问题必须在其他地方例如在这个脚本的位置,当它运行,jQuery是如何被包含等 –

+0

检查您的浏览器控制台 –

+0

我试着从标签之前的文件中运行脚本。我也尝试在html中正确运行

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'); 
}); 
2

该代码看起来是正确的,问题必须在别处。如何调试这样的:

  1. 看选择的比赛有多少个元素:

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

    如果你看到0,则选择不匹配任何东西。

  2. 哪个元素匹配?

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

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

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

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

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

相关:

+0

$(document).ready(function(){console.log('This is text');});这甚至不登录控制台,这是无法解释的... – fusi0n