2011-11-02 4 views
2

내 웹 페이지에 특정 클래스가있는 요소로 배열을 만들려고합니다. 배열은 videoLink 클래스가있는 모든 태그에서 videofile 특성 값을 가져와야합니다.특정 클래스 이름을 가진 모든 요소의 자바 스크립트 배열

배열의 최종 값은이어야합니다.

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' 프로토 타입은 IE 8 이하를 지원하고 싶다면'document.getElementsByClassName'과 같아야합니다. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map – wsanville

+0

@wsanville 예를 참조하십시오. 그러나 거기에는 shim이 있습니다. – Raynos

+0

'slice'가 필요 없습니다 - ['] .map.call (links, function (el) {...' –

1

변경 return this.attr('videofile');에서 return $(this).attr('videofile');으로 변경하십시오. this$()으로 묶어야하므로 attr()을 호출 할 수있는 jQuery 객체가됩니다.

예 : http://jsfiddle.net/r9xJn/

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

근무 예 : http://jsfiddle.net/hY6zM/

+0

내가 달리기를 칠 때, http://jsfiddle.net/hY6zM/ 아무 일도 일어나지 않는다. – user973671

+0

Firebug 나 IE 개발자 툴바 또는 Chrome에서 출력물을 보면 console.log에'[ "cycling_large", "ocean_medium", "winecountry_part1"] ' – wsanville

+0

을 인쇄 할 것입니다. 그것을 알아 내었다. 고마워,이 효과. – user973671

관련 문제