【问题标题】:Pushing child elements into a global array using jQuery使用 jQuery 将子元素推送到全局数组中
【发布时间】:2011-03-04 04:27:25
【问题描述】:

我正在编写一个脚本,它将每个子元素推送到一个全局数组中(以便稍后在我的脚本中进行处理),但由于某种原因,它实际上并未将元素推送到数组中。

代码:

var childElements=new Array();    
function getChildren(elem){
            $(elem).children().each(function(index, value){
                childElements[index] = $(this);
            });
        }

我是不是做错了什么?

【问题讨论】:

    标签: jquery arrays


    【解决方案1】:

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

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

    如果你打算添加更多元素,你可以.push()总是.add()新元素。这也将确保您没有重复。

    var childElements= $();    
    function getChildren(elem){
        childElements = childElements.add( $(elem).children() );
    }
    

    【讨论】:

    • 哇,这很有帮助!我一直在寻找一种方法来清理我的代码。谢谢!
    【解决方案2】:
    $.each($(elem).children(), function(index, value){ 
                    childElements[index] = $(this); 
                });
    

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

    【讨论】:

    • @dennismonsewicz - 我有点困惑。这在功能上等同于您的原始代码。
    • @patrick - 你会如何简化我的代码?必须循环遍历每个数组是我想出的唯一方法
    • @dennismonsewicz - 取决于你最终想要完成什么。当一个 jQuery 对象(实际上)是一个元素数组时,我当然不会看到用单个 jQuery 对象创建一个数组有多大用处。我会添加一个答案。
    猜你喜欢
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    相关资源
    最近更新 更多