Чтобы использовать .each()
для перебора массива или объекта, вам необходимо использовать разные сигнатуры для ввода функции. Таким образом, использование function(bu, key)
не правильно *.
function(index, value) <<< Array
function(key, value) <<< Object
Ниже приведены два примера использования вашей разметки в качестве примера. Обратите внимание, что я добавил немного ширины к UL
, чтобы я мог показать индексы и значения.
var ok = [1,2,3];
$('.list li').remove();
$.each(ok, function(index, value){
$('<li>"key.name_units ('+index+', '+value+')" '+
'<input type="text" name="out[]">'+
'<input type="text" name="out[]">'+
'</li>').appendTo('.list');
});
ok = {
four: '4',
five: '5',
six: '6'
};
$.each(ok, function(key, value){
$('<li>"key.name_units ('+key+', '+value+')" '+
'<input type="text" name="out[]">'+
'<input type="text" name="out[]">'+
'</li>').appendTo('.list');
});
Который выдаст:
<li>"key.name_units (0, 1)" <input name="out[]" type="text"><input name="out[]" type="text"></li>
<li>"key.name_units (1, 2)" <input name="out[]" type="text"><input name="out[]" type="text"></li>
<li>"key.name_units (2, 3)" <input name="out[]" type="text"><input name="out[]" type="text"></li>
<li>"key.name_units (four, 4)" <input name="out[]" type="text"><input name="out[]" type="text"></li>
<li>"key.name_units (five, 5)" <input name="out[]" type="text"><input name="out[]" type="text"></li>
<li>"key.name_units (six, 6)" <input name="out[]" type="text"><input name="out[]" type="text"></li>
http://jsfiddle.net/userdude/SXXee/1/
* По крайней мере, я так не думаю.