2016-06-14 5 views
-1

나는 일을했다 :jQuery의 data() 함수가 제대로 작동하지 않는 것 같습니다. 이전

내 HTML :

<span id="foo" data-foo-bar="42">The Answer</span> 

내 "JQuery와"

const fooElement = $('#foo'); 
const fooBar = fooElement.data('foo-bar'); // 42 
// or 
const fBar = fooElement.data()['foo-bar']; // 42 

하지만 (3.0) jQuery를 업그레이드 한 후 나는이 얻을 :

const fooElement = $('#foo'); 
const fooBar = fooElement.data('foo-bar'); // undefined 
// or 
const fBar = fooElement.data()['foo-bar']; // undefined 

어떻게 해결할 수 있습니까?

변경된 내용 변경 무엇

+0

체크 여기, https://plnkr.co/edit/0g9ITDAouWBL7XYRZzAO?p=preview 객체는 FOOBAR 들어 있으므로 그 @Deep 3.0 – Deep

+0

홀수 jQuery로 잘 동작하는 것 : 42 plnkr.co/edit/eTxAPEXjUNi0b7RxUov7를 ? p = 미리보기. 그것은 귀하의 브라우저가하고있는 것이 틀림 없습니다. – Neal

답변

4

당신이 뭘하려 더 이상을 작동하지 않습니다 것을 의미합니다 지금 breaking change: .data() names containing dashes

가 있다고했다!

은 당신이 할 수있는 일은 이것이다 :

const fooElement = $('#foo'); 
const fooBar = fooElement.data('fooBar'); // 42 
// or 
const fBar = fooElement.data()['fooBar']; // 42 

JQuery와 지금은 모든 "케밥의 경우"(jQuery의 단어하지 광산) 데이터 속성을 낙타 표기법 때문이다.

(원하는 경우) 당신이 사용할 수있는 무엇

는 실제 데이터의 속성입니다 :

const fooElement = document.getElementById('foo'); 
const fooBar = fooElement.getAttribute('data-foo-bar'); // 42 

DOM 당신이 this을 읽을 수 DOM 속성 대 속성에 대해 당신이 더 배우고 싶다면

.