-2

我有一个城市列表,当我点击一个链接时,我想运行一些特定的 Javascript。JSfiddle在这里:http: //jsfiddle.net/uWYRW/5/

var cities = [
    ["new-york", 45, 90, 15]
    ["london", 20, 30, 15]
];

for (i = 0, length = cities.length; i < length; i++) {
    $("#"+cities[i][0]).click(function (e) {
        e.preventDefault();
        console.log(cities[i][0])
    });
}

但是,我收到错误:

“未定义”不是对象”。

请问有人可以解释问题出在哪里吗?

4

2 回答 2

2

尝试一个 IIFE(立即调用的函数表达式):

for (i = 0, length = cities.length; i < length; i++) {
    (function(i) {
        $("#"+cities[i][0]).click(function (e) {
            e.preventDefault();
            console.log(cities[i][0])
        });
    })(i);
}

这是因为一旦循环完成, 的值icities.length适用于所有click侦听器。

此外,您的二维数组中缺少逗号。

于 2013-08-31T15:48:35.963 回答
2
var cities = [
    ["new-york", 45, 90, 15], // <-- that comma was missing
    ["london", 20, 30, 15]
];

请注意您忘记在数组中分隔的逗号:)

于 2013-08-31T15:49:42.290 回答