Javascript / jquery从具有相同rel的元素创建数组?

时间:2012-03-17 21:44:08

标签: javascript jquery

如何使用一组具有相同rel的元素创建数组?

例如:

<a rel='array' id='2' url='aa'></a>
<a rel='array' id='5' url='bb'></a>
<a rel='array' id='8' url='cc'></a>

阵列:

[2] > aa
[5] > bb
[8] > cc

我将每个网址作为值使用。但订购ID应该足够了。

如何做到这一点?

6 个答案:

答案 0 :(得分:2)

jquery不够!

var arr = [];
$('a[rel="array"]').each(function(){
    arr.push($(this).attr('url'));
});

答案 1 :(得分:1)

var anchors = document.getElementsByTagName('a'), i = 0, arr = [], current;

for(i; i < anchors.length; i++){
    current = anchors[i];

    if(current.getAttribute('rel') == 'array') {
        // arr.push(current.getAttribute('url'));
        arr.push({ 'id' : current.id, 'url' : current.getAttribute('url') });
    }
}

http://jsfiddle.net/8ScSH/

答案 2 :(得分:0)

如果你正在使用jquery,那很容易:

var arr = [];
$('a[rel="array"]').each(function() {
    arr.push($(this).attr('url'));
});


Fiddle

答案 3 :(得分:0)

var itemArray = [];
$("a[rel='array']").each(function() { itemArray.push($(this).attr("url") });

答案 4 :(得分:0)

尝试

var a = {};

$('#wrap a').each(function() {
    if($(this).attr('rel') === "array") {
        a[$(this).attr('id')] = $(this).attr('url');
    }
});​​

数组不会剪切它,你需要一个对象。活着:http://jsfiddle.net/martincanaval/rAPkL/

答案 5 :(得分:0)

var elements = [];
$('a[rel="array"]').each(function() {
    elements[this.id] = $(this).attr('url');
});

请注意,这会创建一个稀疏数组,其中只包含元素ID指定的索引值,这对我来说没有多大意义,但这就是你要求的。如果任何id都可以是非数字的,真的是没有意义的 - 如果是这样你应该使用一个对象而不是一个数组,即:

var elements = {};

“我将每个网址作为值只是为了使用某些东西。但是订购ID应该足够了。”

如果您打算获取一系列ID,那么您可以这样做:

var elementIds = [];
$('a[rel="array"]').each(function() {
    elementIds.push(this.id);
});

这将创建数组['2', '5', '8'],其中id将按照它们在源html中出现的顺序排列。

然而,只是说$('a[rel="array"]')为您提供了一个jQuery对象,它是一个类似于数组的结构,包含所有匹配元素 - 这就是我们可以使用.each()方法迭代每个元素的原因。因此,无论你真正想做什么都可以直接用jQuery完成,而不是设置你自己的数组。