0

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

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

span应该产生一个包含和的数组a

我将如何实现这一目标?

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

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

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

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

注意:我使用的是 zepto.js,它的语法与 jquery 相似,但缺少很多功能,所以这可能是个问题,但我也对使用 jquery 语法的解决方案感到满意,因为它应该工作得很好:) https:// github.com/madrobby/zepto

4

3 回答 3

2

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

var elementsArray = [];

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

JS 小提琴演示

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

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

JS 小提琴演示

虽然这只是使用tagName每个a元素$('div').find('a')

通过使用更复杂的选择器和行为,上述警告似乎被打了折扣,并允许每个元素一次迭代一个,尽管我不禁觉得它比它需要的复杂一点:

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 小提琴演示

叹息,我是个白痴。其最终迭代如下,这在一定程度上降低了复杂性,并允许根据每个元素在数组中的位置对其进行适当的迭代:

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');
}

JS 小提琴演示

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

$('div').children();

它将选择和定位元素的每个直接子div元素,而无需先将它们保存在用户创建的数组变量中,也不必将它们保存在用户创建的数组变量中。

于 2011-08-17T22:11:42.957 回答
0

$("div").children().toArray();

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

$("element1","element2","element3")

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

于 2011-08-17T22:14:03.413 回答
0

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

于 2011-08-17T22:14:33.070 回答