2011-11-02 57 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

相關問題