如何将子标记添加到javascript数组

时间:2011-08-17 22:04:38

标签: javascript jquery zepto

我正在尝试使用div的所有直接子元素填充数组。 例如:

<div>
    <span></span>
    <a></a>
</div>

应该会生成包含spana

的数组

我将如何实现这一目标?

我试过var elements = $('.thediv').children();,但这似乎不起作用。

另外,我将如何将这些信息用于此类功能?:

$(“element1”,“element2”,“element3”)取决于数组的结果?

真的非常感谢你的帮助!我有点迷失这件事

注意:我正在使用zepto.js,它具有与jquery类似的语法,但是错过了很多函数,因此这可能是一个问题,但我也对使用jquery语法的解决方案感到满意,因为它应该可以正常工作:) { {3}}

3 个答案:

答案 0 :(得分:2)

要将标记放入数组中,您可以轻松使用jQuery(虽然我不熟悉):

var elementsArray = [];

$('div').children().each(
    function(i){
        elementsArray.push(this.tagName.toLowerCase());
    });

JS Fiddle demo

要使用它们,您可以尝试:

for(i=0;i<elementsArray.length;i++){
    $('div').find(elementsArray[i]).css('color','red');
}

JS Fiddle demo

虽然这只是使用每个元素的tagName,但如果相关元素所有元素中的多个a与选择器匹配,则有效{{1在这种情况下,将由选择器作为目标。

上述注意事项似乎通过使用更复杂的选择器和行为来打折,并且允许每个元素一次迭代一个,尽管我不禁觉得它比它更复杂一点。需要:

$('div').find('a')

JS Fiddle demo

叹息,我是个白痴。下面的最后一次迭代,在某种程度上降低了复杂性,并允许根据它们在数组中的位置对每个元素进行适当的迭代:

var elementsArray = [];

$('div').children().each(
    function(i){
        elementsArray.push(this.tagName.toLowerCase());
    });

for(i=0;i<elementsArray.length;i++){
    $('div')
        .find(elementsArray[i])
        .not('.edited')
        .eq(0).css('color','red')
        .addClass('edited');
}

JS Fiddle demo

尽管如此,如果你想“定位所有元素”,为什么不简单地将这些元素作为目标:

var elementsArray = [];

$('div').children().each(
    function(i){
        elementsArray.push(this.tagName.toLowerCase());
    });

for(i=0;i<elementsArray.length;i++){
    $('div')
        .children()
        .eq(i)
        .css('color','red');
}

选择和定位$('div').children(); 元素的每个直接子元素,而不先将它们保存在用户创建的数组变量中,或者必须将它们保存在用户创建的数组变量中。

答案 1 :(得分:0)

$( “DIV”)的儿童()指定者();

http://api.jquery.com/toArray/

  

$( “元素1”, “element2的”, “元素3”)

这是否意味着您要将数组用作jQuery选择器?或者你真的想要标签名称?

答案 2 :(得分:0)

每个DOM节点都有一个childNodes属性,它是一个NodeList,包含所讨论节点的所有直接后代。