2012-03-17 66 views
0

如何从一组元素中创建一个具有相同rel的数组?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 

我把每个URL作为价值只是使用的东西。但是订购ID应该足够了。

这怎么办?

+0

你使用jQuery或类似的东西? – Niko 2012-03-17 21:45:28

回答

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/

1

没有足够的jQuery!

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

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

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


Fiddle

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

尝试

var a = {}; 

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

一个数组不会削减它,你需要一个对象。住在这里:http://jsfiddle.net/martincanaval/rAPkL/

+0

同样的想法适用于不使用Jquery:http://jsfiddle.net/martincanaval/3GAYN/1/ – 2012-03-17 22:14:39

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

请注意,这将创建一个稀疏阵列仅由元素ID,这没有多大意义,我指定的索引值,但是这就是你问什么。它真的没有意义,如果任何ID可以是非数字 - 如果是这样,你应该使用一个对象,而不是一个数组,即:

var elements = {}; 

“我把每个URL作为值只是去使用一些东西,但是有了这些ID就足够了。“

如果你的目的是要获得一个ID数组,那么你可以这样做:

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

这将创建数组['2', '5', '8']其中标识的顺序,它们出现在HTML源中。

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

相关问题