2012-06-12 2 views
42

를 반환 I 다음 코드를 가지고 상기 제 경고 정수 3를 반환 반면의 jQuery 데이터()가 정의되지 않은, ATTR()를 돌려 정수

alert($embellishment.data("embellishmentId")); 
alert($embellishment.attr("data-embellishmentId")); 

제 경고, undefined를 반환한다.

-- SEE DEMO --

내가 jQuery를 버전 1.7.2 사용하고

왜 이런 일이 (data은 버전 1.4 저는 믿습니다으로 추가되었습니다)? 올바른 값을 반환하지 않으면 data()을 사용해야합니까?

답변

91

확인. jQuery docs을 해석하여 문제를 발견했습니다.

당신은 쓸 때 :

$embellishment.data("embellishmentId"); 

이 화합물의 특성으로 jQuery를 처리합니다 : 그래서

<div data-embellishment-id="3"></div> 

, 당신은 데이터 키에 소문자를 사용하여 문제를 해결하기 위해, 그렇지 않으면 단지 주소 다른 속성. -;``내부 함수 dataAttr` .toLowerCase() VAR '이름 = "데이터 -"+ key.replace ("$ 1"rmultiDash) :

<!-- HTML --> 
<div data-embellishmentid="3"></div> 

// JavaScript 
$embellishment.data("embellishmentid"); 
+5

여기를 수행하는 소스 코드이다. 'rmultidash'는'rmultiDash =/([AZ])/g;' – Esailija

+0

http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#embedding-custom-non입니다. 데이터와 함께 가시 데이터 - * - 속성 – Alex

+0

얘들 아, jQuery는 오랫동안 그것을 해왔다. CSS 속성을 살펴보십시오. CSS 스타일을보고 싶다면 camelCase를 인용 부호가없는 속성에 사용합니다. 예를 들어'$ ('elem') .ss ({paddingTop : '40px'}); 그리고 $ ('elem') .css ({ '패딩 - 탑': '40px'}); . – TerranRich