jQuery将元素推入数组

3

我不确定是我现有代码中存在错误,还是Jquery数组的功能如下:

var categories = [];
$(this).children('categories').each(function() {
    categories.push($(this).find('name').text());
});

现在,当我有以下的XML节点时:

<categories>
    <name>a</name>
    <name>b</name>
    <name>c</name>
</categories>

我看到在Firebug中,categories数组只有一个元素 - “abc”,但实际上它应该作为索引2,并且值为'a','b'和'c'。
我的代码有什么问题吗?
2个回答

7
$(this).children('categories').each(function() {
    $(this).find('name').each(function(){
        categories.push($(this).text());
    });
});

3
var categories = [];
$(this).find('categories name').each(function() {
    categories.push($(this).text());
});

你正在遍历每个名为categories的元素(只有一个),并获取其中所有名为name的元素的文本。只有一次调用text意味着只有一个值。你需要循环遍历name而不是categories元素。

1
实际上,在包含多个元素的 jQuery 对象上调用 .text() 方法将连接值。 - Phil
对,转换成一个单一的值。这就是为什么数组中只有一个值。 - James Montagne
不,我不能使用 find('categories name'),因为我不想在树节点中获取所有内容(类别节点在 XML 树中重复)。所以我只能使用 .children - Programmer
1
那么使用 children('categories').find('name'),不要像您选择的答案那样使用两个each循环。 - James Montagne

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