将每个子元素的'id'存入数组或字符串中

10
我需要为一系列div id创建一个逗号分隔的值,并将其作为隐藏输入的值。
<div id="main">
<div id="A"></div>
<div id="B"></div>
<div id="C"></div>
</div>

<input type="hidden" id="children"/>
我想使用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);
    }

这样不对


我们知道这不对。你确切地知道它有什么问题吗?有任何具体的错误吗? - Jon Egeland
检查你的引号和括号!提示:在main后面减去引号,在id引号后加上右括号,在第一个}后加上右括号。 - The Nail
语法高亮就是为了让你看到错误,它会告诉你哪里出了问题。 - elclanrs
抱歉,复制粘贴后为了简化某些变量,修复了 alert(input_value); 是空的问题。 - Daniel Hunter
4个回答

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

我正在使用这个。谢谢你的帮助。 - Daniel Hunter

11

你可以使用 map -

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

上面的代码依赖于你的HTML被更改为 -

<div id="main">
    <div id="A"></div>
    <div id="B"></div>
    <div id="C"></div>
</div>​
map 函数将返回一个包含在 'main' div 中的每个 div 的 id 的 jQuery 对象。您可以调用 get() 函数将 map 函数返回的对象转换为 JavaScript 数组,然后使用 join 函数返回逗号分隔的字符串。
演示 - http://jsfiddle.net/8tZXH/1

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

$('#children').val(ids);

@ThiefMaster:我所有的新帖子现在都是CW。出于某种原因,我只是更喜欢这样。 - user1106925

1

你可能想使用 children('div'),而不是 children('id')


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接