2012-08-14 2 views
11

이 요소에서 3 개의 데이터 값을 모두 가져 오는 방법이 있습니까?HTML5에 여러 개의 data- {name} 속성을 가질 수 있습니까?

이것은 내가 시작하는 프로젝트에 정말 유용 할 것입니다. 이것으로 필요한 js 모듈을로드하고 DOM에 연결할 수 있습니다. 이상하게 들릴지도 모르지만 나는 여기서 새로운 것을 시도하고 있습니다.

+2

당신

<div id="viewport" data-requires='js/base/paths' data-requires='js/base/dialog' data-requires='js/base/notifier'> 

이 작업을 수행 할 수 있습니다 데이터가 필요함을 의미합니다. 네가 그렇게 할 수 있다고 생각하지 않아. 왜 그걸 함께 모으지 않는거야? data-requires = 'js/base/paths | js/base/dialog | js/base/notifier' –

+0

나는 모든 것을 함께 모으는 것으로 생각합니다. 3 가지 요구 사항을 작성해야하는 유일한 이유는 팀에 합류하는 새로운 개발자에게보기 좋게 보이게하는 것이 었습니다. –

+0

네, 그렇게 할 수있어서 좋을 것입니다. –

답변

3

무언가로 분리 한 다음 모두 나누어서 배열에 넣을 수 있습니다.

// oops here's plain JS 
var arrayData = document.getElementById('viewport').getAttribute('data-requries'); 
var arr = arrayData.split(','); 

for (i = 0; i < arr.length; i++) { 
    console.log(arr[i]); 
} 

http://jsfiddle.net/S7D2D/1/

16

귀하의 질문에 대한 답변은 HTML이 동일한 속성의 여러 인스턴스를 지원하지 않는다는 것입니다. 이 속성을 가져올 수있는 모든 일반적인 방법은 세 가지 중 하나만 검색합니다.

이 문제를 해결하는 일반적인 방법은 속성의 단일 인스턴스를 사용하고 여러 경로를 값으로 지정하는 것입니다. 경로의 경우 대개 세미콜론으로 구분됩니다.

<div id="viewport" data-requires='js/base/paths;js/base/dialog;js/base/notifier'> 

그리고 코드를 사용하여 다중 값 속성을 배열로 분해하십시오.

var requiredPaths = document.getElementById("viewport").getAttribute("data-requires").split(";"); 
+0

이 방법은 재단 드롭 다운에서 다음과 같은 여러 데이터 옵션을 허용합니다 :'data-options = "is_hover : true; align : right"'. 고맙습니다. 다른 곳에서는이 작업을 수행하는 방법을 찾지 못했습니다. – lwalden

7

data- 속성 내에 더 복잡한 구조를 사용할 수 있습니다. 대신이의

:

<div id="viewport" 
data-requires='["js/base/paths", "js/base/dialog", "js/base/notifier"]'> 
</div> 

증명 (단지 배열이 방식으로 검색하는 : jQuery('#viewport').data('requires')를) jQuery.data()를 사용하여이 : 여기에 있습니다 : 아마 http://jsfiddle.net/3StZs/

+0

브라우저가 있으면 호기심이 생겨 ... –

+0

@rohit_wason : 왜 이걸 걱정하니? 이 기술은 수년간 사용되어 왔으며, 외래 브라우저조차도 지원됩니다 (첫 번째로 더 이상 사용하지 않아야하며 두 번째로 jQuery 버전을 지원해야 함). 그와 관련하여 특별히 우려하는 점은 무엇입니까? jQuery는 매우 오래된 브라우저와 호환이 잘되는 것 같다. 나이가 많으면 오래된 버전의 jQuery를 사용해야 할 수도있다. – Tadeck

+0

내 원래의 의견은 진정으로 여러 속성을 사용하는 것에 관한 것입니다. 나는 그 질문을 철저히 읽지는 않는다고 생각한다. 나는 지금 본다. –

관련 문제