2010-09-21 3 views
0

я назначил переменный с массивами внутри массива т.е.Jquery щелкните HREF ссылку внутри для цикла

var encounter_names = new Array(); 
encounters.encountersDB.each(function(encounter) { encounter_names.push(new Array(encounter.key, encounter.name))}) 

это моя для оператора цикла упоминается как ниже

for (var i = 0; i < encounter_names.length; i++) { 
    window['li' + i] = $("li[key='" + encounter_names[i][0] + "']") 
    window['li' + i] = $("<li key='" + encounter_names[i][0] + "' class='list'><a class='arrow_'+ encounter_names[i][0] +'" + encounter_names[i][0] + "' href='#'>" + encounter_names[i][1] + "</a></li>") 
    $('.arrow_' + encounter_names[i][0] + '').click(function (event) { 
     encounters.show(window['key' + i]); 
     event.preventDefault(); 
    }) 
    encounters_list.append(encounter_names[i][0]) 
} 

Когда я щелкните HREF ссылка Я получаю следующую ошибку в журнале консоли:

TypeError: Result of expression 'encounter_names[i]' [undefined] is not an object.

Любые предложения всегда приветствуются.

+0

пардон instaed из list_of_encounters я должен быть encounter_names –

+0

Отражает ли моя редактировать то, что вы имели в виду? –

+0

В первом разделе кода вы добавляете значения из-под имени «встреча» в массив сталкиваются_имя. Во втором разделе кода, откуда появилась переменная «list_of_encounters»? - Ничего, обновляешься, пока я печатал. –

ответ

1

Я думаю, что confounters.encountersDB - это объект, а не объект html?
Проблема заключается в следующем: каждая функция получает два аргумента: текущий индекс и элемент. Таким образом, вы просто должны изменить это:

var encounter_names = []; // short form for new Array() 
$.each(encounters.encountersDB, function(index, encounter) { 
    encounter_names.push([encounter.key, encounter.name]); 
})