2013-04-01 3 views
0

Объяснение для того, что я делаю.Добавление события Click для элементов внутри многомерного массива

У меня есть ul, у которых есть ли, у которой есть визитная карточка, а amout варьируется. Я хочу добавить лишнюю ли, чтобы показать описание виртуальной карты, которую я нажал. например, если я нажал 1-я 2-я или 3-я карта, я хочу добавить новую ли на 4-м месте, если я нажал 4-й или 6-й, тогда я хочу добавить новый ли на 7-м месте.

Для этого я создал функцию для разделения li на многомерный массив с тремя li внутри массива. и что mulidimensinal array - это куски вызова. теперь я получил письмо. но я не могу прикрепить новый li в моем нужном месте.

И я получаю эту ошибку TypeError: ломти [я] не определено

И я дал ниже код

chunks[i] is undefined

chunks = [ 
    [li.pL14, li, li.pR15], 
    [li.pL14, li, li.pR15], 
    [li.pL14, li, li.pR15], 
    [li.pL14, li, li.pR15], 
    [li.pL14, li, li.pR15] 
] 

for (var i=0; i<chunks.length; i++) {  
    for (var j=0; j<chunks[i].length; j++) { 
     $(chunks[i][j]).click(function() { 
      $(chunks[i][j]).append('<li class="description"> <div class="cardDesCont mT1Mi"></div></li>'); 
     }); 
    } 
} 

Почему это, что происходит?

+0

Почему вы добавляете событие click для каждого элемента? Для его обработки используйте делегирование событий для родителя. – epascarello

+1

Это будет второй раз, когда вы спросите об этом, что не работает с вашего [первого вопроса] (http://stackoverflow.com/questions/15739652/adding-click-event-for-array-elements-in-javasctipt)? – adeneo

+0

Что означает 'li' как? –

ответ

1

У вас есть i++, где у вас должно быть j++, во внутреннем цикле. Таким образом, вы увеличиваете i за пределы массива. Ваш код должен быть:

for (var i=0; i<chunks.length; i++) { 
    for (var j=0; j<chunks[i].length; j++) { 
     // --------------------- HERE ^^^ 
     $(chunks[i][j]).click(function() { 
      console.log('script works'); 
     }); 
    } 
}