过去三个小时我一直在试图解决这个问题,这很奇怪......
我有一个无序列表,它是动态生成的,如下所示:
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
}
我是疯了还是这很奇怪?
答案 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")
中有其他无序列表,也会定位它们。