使用jQuery将子元素推入全局数组

3
我正在编写一个脚本,将每个子元素推入全局数组(以便稍后在我的脚本中处理),但由于某种原因它实际上没有将元素推入数组。
代码:
var childElements=new Array();    
function getChildren(elem){
            $(elem).children().each(function(index, value){
                childElements[index] = $(this);
            });
        }

我做错了什么吗?
2个回答

3

由于 jQuery 对象是类似数组的对象,我可能会直接使用它而不是创建一个包装了单独对象的数组。

var childElements=$(elem).children();

如果您想添加更多元素,您可以始终使用.push()添加新元素。这也可以确保您没有重复的元素。
var childElements= $();    
function getChildren(elem){
    childElements = childElements.add( $(elem).children() );
}

哇,这非常有帮助!我一直在寻找一种清理我的代码的方法。谢谢! - dennismonsewicz

2
$.each($(elem).children(), function(index, value){ 
                childElements[index] = $(this); 
            });

编辑: Patrick提出了一个有力的观点。如果你只想要一个子对象的数组,那么简单的var childElements = $('selector').children();就足够了。除非你希望该数组的值包含子元素的特定属性(的组合),否则不需要使用函数。


@dennismonsewicz - 我有点困惑。这段代码在功能上等同于您的原始代码。 - user113716
@patrick - 你觉得我该如何简化我的代码?目前我只能想到通过循环遍历每个数组来实现。 - dennismonsewicz
@dennismonsewicz - 取决于你最终想要实现什么。当一个jQuery对象(有效地)是一个元素的数组时,我肯定不会看到使用单个jQuery对象创建一个数组的用途。我会添加一个答案。 - user113716

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