HTML: неупорядоченный список не упорядочен правильно

Последние три часа я ходил кругами, пытаясь это исправить, это очень странно...

У меня есть неупорядоченный список, который динамически генерируется так:

var numberOfSlides = 7;

for (i = 0; i < numberOfSlides; i++) {

    main.menu.append("<li class='ui-state-disabled'>List item " + i + "</a></li>");

}

Это правильно отображает (все отключено):

List item 0
List item 1
List item 2
List item 3
List item 4
List item 5
List item 6

Позже в коде я вызываю функцию, которая должна активировать указанный элемент:

enableMenuItem(2);

enableMenuItem: function(slideNumber){

    console.log("slideNumber: " + slideNumber); // log outputs "slideNumber: 2"

    $("ul li").eq(slideNumber).removeClass('ui-state-disabled'); // this doesn't work

}

Он отлично работает для других значений, но не для 2, и я обнаружил, что если я вызываю enableMenuItem(5), то 2 активируется.

Странная вещь, если я сделаю это...

$("ul li").eq(2).removeClass('ui-state-disabled');

...оно работает.

Но это не...

if(slideNumber === 2){
    console.log("slideNumber equals 2"); // logs "slideNumber equals 2", so the below line should execute
    $("ul li").eq(2).removeClass('ui-state-disabled'); // doesn't work
}

Я схожу с ума или это очень странно?

2 ответа

Решение

Поскольку вы добавляете элементы в main.menu Вы должны привязать события к одному и тому же.
Вот так:

main.menu.find("> li").eq(slideNumber).removeClass('ui-state-disabled');

Если у вас есть другие неупорядоченные списки в документе $("ul li") будет нацеливаться на них, а также.

У вас есть опечатка в вашей декларации вашего enableMenuItem метод:

enableMenuItem: function(slideNumber){
  // Some code
}

Вы должны объявить это как:

function enableMenuItem(slideNumber) {
  // Some code
}

или же

var enableMenuItem = function(slideNumber) {
  // Some code
}
Другие вопросы по тегам