Получить каждый ребенок ('id') в массив или строку

Мне нужно создать значение, разделенное запятыми, для скрытого ввода, созданного из серии div id

Я хочу использовать jquery, но имею проблемы с функцией

function update_input(main){
 var array = new Array();
 $('#'+main).children('id').each(function(){
 array.push($(this).attr('div')); 
 }); 
 input_value = array.toString();
 $('#children').val(input_value);
 }

Это неправильно [/p >

4 ответа

$('div','#main').each(function(){
 array.push($(this).attr('id')); 
 });


Вы можете использовать map -

​var arr = $("#main > div").map(function() {return this.id});
$('#children').val(arr.get().join(","));

Приведенный выше код основывается на изменении вашего HTML-кода на

<div id="main">
 
 
 
</div>​

Функция map вернет объект jQuery, содержащий идентификаторы каждого div, содержащиеся в главном div. Вы можете вызвать функцию get(), чтобы вернуть объект, возвращаемый функцией map, в массив Javascript, а затем использовать функцию join для возврата строки с разделителями-запятыми.

Демо - http://jsfiddle.net/8tZXH/1


var ids = $('#main > td').map(function(){
 return this.id
 }).toArray(); 
$('#children').val(ids);


Вероятно, вы хотите использовать children('div'), а не children('id')

licensed under cc by-sa 3.0 with attribution.