HTML:无序列表未正确排序

时间:2014-01-19 14:37:26

标签: javascript list unordered

过去三个小时我一直在试图解决这个问题,这很奇怪......

我有一个无序列表,它是动态生成的,如下所示:

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 个答案:

答案 0 :(得分:0)

您的enableMenuItem方法声明中有拼写错误:

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

您应该将其声明为:

function enableMenuItem(slideNumber) {
  // Some code
}

var enableMenuItem = function(slideNumber) {
  // Some code
}

答案 1 :(得分:0)

由于您要将项目附加到main.menu,因此您应该将事件绑定到同一事物上 像这样:

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

如果您在文档$("ul li")中有其他无序列表,也会定位它们。