2011-11-02 53 views
2

我想从我的网页中某个类的元素创建一个数组。该数组应该从类videoLink的所有标签中获取videofile属性值。来自具有某个类名的所有元素的Javascript数组

数组中的最终值应该是。

cycling_large, ocean_medium, winecountry_part1 



<a class="videoLink" videofile="cycling_large" ></a> 
<a class="videoLink" videofile="ocean_medium" ></a> 
<a class="videoLink" videofile="winecountry_part1" ></a> 

我试过这个,但是,不起作用。

var values = $('.videoLink').map(function() { return this.attr('videofile'); }).get(); 

在此先感谢。

+1

'videofile'?我认为你的意思是'data-videofile' ...':P' –

回答

4
var links = document.getElementsByClassName("videoLink"); 
var values = [].map.call(links, function (el) { 
    return el.getAttribute("videofile"); 
}); 

因为你简单的事情不要jQuery的。

浏览器支持:

+0

然而,您将需要定义array.map'原型,如果你想要这个支持IE8和更早版本,与'document.getElementsByClassName'相同。请参阅https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map – wsanville

+0

@wsanville yes。但是有一些垫片。 – Raynos

+0

不需要'切片' - 只是'[] .map.call(链接,功能(el){...' –

1

更改return this.attr('videofile');return $(this).attr('videofile');。 您需要将this放入$(),以便它成为jQuery对象,然后您可以打开attr()

例子:http://jsfiddle.net/r9xJn/

0
var result = $.map($('a.videoLink'), function(a) { 
    return $(a).attr('videofile'); 
}); 

工作例如:http://jsfiddle.net/hY6zM/

+0

当我碰到run时,http://jsfiddle.net/hY6zM/没有任何反应。 – user973671

+0

如果你看看Firebug的输出,IE开发者工具栏或者Chrome浏览器的输出,你会看到console.log会打印'[“cycling_large”,“ocean_medium”,“winecountry_part1”]' – wsanville

+0

不要紧,I弄清楚了。谢谢,这工作。 – user973671

相关问题