2013-08-26 9 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'); 

Проблема заключается в том, что я не могу добавить или удалить «выбранный» класс из этих элементов. html и jquery оба довольно прямолинейны, и столько примеров, сколько я мог найти, сделали все одинаково, включая официальные документы jQuery. (Сценарий загружается перед тегом тела, если это имеет значение)

Почему я не могу удалить и добавить классы следующим образом?

Весь HTML страницы here

+6

Вы можете, проблема должна быть в другом месте, например, когда этот сценарий находится, когда он работает, как JQuery включен, и т.д. –

+0

проверить вашу консоль браузера –

+0

Я попытался запустить скрипт из файла, который был включен непосредственно перед тегом. Я также попытался запустить код из тега

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 ('Это текст');}); Это даже не входит в консоль, что необъяснимо ... – fusi0n