2009-07-24 3 views
5

지금은 다음과 같은 다양한 무효 한 일을하고 있습니다.jQuery : 사용자 정의 속성과 함께 attr 사용

<span time="50" distance="60"></span> 

그리고 나서 그 정보를 얻습니다 :

var time = $('span').attr('time'); 
var distance = $('span').attr('distance'); 

그리고 나서 jS/jQuery에서 시간과 거리로 여러 가지 일을합니다.

나에게 이것은 잘못된 생각이다. 그것은 비꼬는 말이지 만, 나는 그것에 대해별로 신경 쓸 수 없다. (실제 데이터는 시간과 거리가 아니라 쓸데없는 페이지와 특정 페이지, SE는 관심이 없다.) 그러나 이것이 나쁜 생각 인 이유가 있습니까?

좀 더 '공식적인'방식으로 비슷한 것을하는 메타 데이터 플러그인이 있다는 것을 알고 있으며, 그것을 사용하는 것에 대해 생각했습니다. 그러나이 .attr 항목은 내 요구에 적합하며 플러그인을 사용할 특별한 이유가 없습니다.

기본적으로, 이것은 사용하기에 알맞은 패턴이며, 그렇지 않다면 왜 안되며, 메타 데이터 플러그인에 관심을 가져야합니다.

고마워.

+0

는 말은하지 않았다 –

+2

"insemantic"이 아니라 올바르지 않습니다. 논증 할 수 있듯이 예를 들어 클래스 이름으로 모든 것을 강제하는 것보다 의미 론적입니다. –

답변

7

HTML5에는 이전 버전과 호환되는 특성에 데이터를 포함 할 수있는 기능이 포함되어 있습니다. 다음 예는 다음과 같습니다

<li class="user" data-name="John Resig" data-city="Boston" 
    data-lang="js" data-food="Bacon"> 
    <b>John says:</b> <span>Hello, how are you?</span> 
</li> 

Useragents 아마도 쉽게 별도로 데이터 비트를 꺼내 할 것입니다 자바 스크립트로 .dataset 아이디어를 구현하는 것입니다,하지만 지금은 당신의 클래스를 변경하기위한 데이터 -이 충분 포함. 그러면 HTML5로 확인됩니다.

나에게 이것은 메타 데이터 jquery 아이디어보다 훨씬 뛰어나다. . VAR 거리 = $ ('기간') ATTR ('거리');

See here for more info.

+0

HTML5는 아직 최종 * *이 아니며 앞으로 5 년간 주류가되지는 않을 것입니다. –

+2

아니요,하지만이 방법은 이미 작동하며 최소한이 작업을 수행 할 수있는 표준 방법을 제공합니다. 나는 이것이 최선의 해결책이라는 데 동의하지 않는다. 그러나 사람들이 사용할 수 있고 앞으로는 유효 할 것이다. –

+0

환상적입니다. HTML5에있는 경우 그 위에 모두 있습니다. :) – Mark

3

사용자 지정 특성을 사용하고 XHTML을 사용하는 경우에는 네임 스페이스를 지정하고 해당 'xmlns'정의를 'html'요소의 일부로 제공하는 것이 좋습니다. 상황에 맞는 정보를 제공하기 위해 속성을 추가해야 할 때마다이 작업을 수행합니다. 특히 jQuery와 같이 지금까지 꽤 잘 작동했습니다. 대신 .attr('ns:name')을 사용하면됩니다.

+0

사용자 지정 네임 스페이스에 +1 – ChssPly76

+0

이 점에서 네임 스페이스는 상호 운용성에 유용합니다. 그렇지 않으면 의미가 없습니다. 비표준 속성을 편집하지 않습니다. DOM 객체의 속성을 편집하고 있습니다. – eyelidlessness

+0

고마워.하지만 처음에는 사용자 지정 특성을 사용하는 것이 좋은 아이디어인지 아닌지에 대한 질문에는 답이 없습니다. – Mark

1

왜 사용하지 않으시겠습니까? 귀하의 페이지는 validate on XHTML이 아닙니다.

하지만 유효성 확인 방법에 따라 다릅니다.

+0

(X) HTML 유효성은 속성 및 속성의 Javascript 설정에 신경 쓰지 않습니다. – eyelidlessness

+0

스크립트를 통해 설정 한 경우에는 표시되지 않습니다. OP는 html에 속성을 추가합니다. –

+0

스크립트를 통해 HTML 형식으로 작성하므로 잘 될 것입니다. :) – Mark

0

metadata plugin을 사용할 수 있습니다.

<span class="{ time:'50', distance:'60'}"></span> 

을하고 자바 스크립트는 다음과 같습니다 : 그런 다음 HTML이 될 것

var data = $('span').metadata(); 
var time = data.time; 
var distance = data.distance; 

마크 업 유효성을 검사 할 그 길을 당신은 서버 측에 자바 스크립트로 데이터를 얻을 수 있습니다.

편집 : 이미 메타 데이터 플러그인을 언급 한 것으로 나타났습니다. 미안하지만, 나는 흥분하고 그냥 제대로 질문을 읽지 않고 게시있어. 다른 사람이 유용하다고 생각할 경우에 대비하여 여기에 내 답변을 남겨 둘 것입니다.

+2

이는 HTML 요소의 유효한 클래스 값이 아닙니다. 클라이언트 측 DOM 객체 메타 데이터를 저장하는 방법론을 홍보하고 있습니다. 해당 방법론은 실제로 유효하지 않거나 유효하지는 않지만 마크 업 등가물과 충돌 시키면 문제가 혼란스러워집니다. – eyelidlessness

+0

마크 업의 유효성을 검사했다는 의미였습니다. 내 게시물을 약간 명확하게했습니다. – jammus

0

jQuery는 속성과 DOM 속성을 동일한 것으로 취급한다는 점에서 혼란이 있습니다. 속성은 마크 업에 대한 메타 데이터입니다. DOM 속성은 DOM 개체에 대한 메타 데이터입니다. jQuery는 DOM 속성을 사용하여 마크 업 요소를 나타내는 DOM 객체에 대한 메타 데이터를 조작합니다. 잘못 설명하기 위해 용어 "속성"을 사용합니다.

+0

이것은 좋은 지적이지만, 왜 구별이 필요한지 알지 못합니다. – Mark

+0

마크 업 속성의 의미가 DOM 속성의 의미와 다르므로 그것은 마크 업 속성을 설정하는 것이 DOM 속성을 설정하는 것보다 다른 제한 및 사전 고려 사항을 제기 할 수 있다는 점에서 귀하의 질문과 관련이 있습니다. – eyelidlessness

관련 문제