2013-08-26 134 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