[JQUERY] Attr의 대 jQuery를 데이터?
JQUERYAttr의 대 jQuery를 데이터?
해결법
-
1.서버에서 DOM 요소에 데이터를 전달하는 경우 요소의 데이터를 설정해야합니다 :
서버에서 DOM 요소에 데이터를 전달하는 경우 요소의 데이터를 설정해야합니다 :
<a id="foo" data-foo="bar" href="#">foo!</a>
데이터는 다음에 jQuery를 .DATA ()를 사용하여 액세스 할 수있다 :
console.log( $('#foo').data('foo') ); //outputs "bar"
당신이 데이터를 사용하여 jQuery를에 DOM 노드에 데이터를 저장하지만 때, 변수는 노드 객체에 저장됩니다. 이것은 단지 문자열 값을 수용 할 특성으로, 노드 엘리먼트에 데이터를 저장하고 복잡한 객체 참조를 수용 할 수있다.
$('#foo').data('foo', 'baz'); console.log( $('#foo').attr('data-foo') ); //outputs "bar" as the attribute was never changed console.log( $('#foo').data('foo') ); //outputs "baz" as the value has been updated on the object
또한, 데이터에 대한 명명 규칙 속성 숨겨진 "잡았다"조금있다 :
<a id="bar" data-foo-bar-baz="fizz-buzz" href="#">fizz buzz!</a>
console.log( $('#bar').data('fooBarBaz') ); //outputs "fizz-buzz" as hyphens are automatically camelCase'd
하이픈 키는 여전히 작동합니다 :
<a id="bar" data-foo-bar-baz="fizz-buzz" href="#">fizz buzz!</a>
console.log( $('#bar').data('foo-bar-baz') ); //still outputs "fizz-buzz"
그러나 .DATA ()에 의해 반환되는 객체는 하이픈 키가 설정되어 있지 않습니다 :
$('#bar').data().fooBarBaz; //works $('#bar').data()['fooBarBaz']; //works $('#bar').data()['foo-bar-baz']; //does not work
내가 자바 스크립트에서 하이픈 키를 피하는 것이 좋습니다 이런 이유입니다.
HTML의 경우, 하이픈 양식을 계속 사용. HTML 속성은 ASCII-소문자 그래서
DIV>DIV> 및DIV> 해야하는 치료하는, 자동으로 얻을로되어있다 동일이 아니라, 최적의 호환성을 위해 소문자 형태가 바람직 할 것이다.값이 인식 패턴과 일치하는 경우 .DATA () 메서드는 몇 가지 기본 자동 시전을 수행합니다 :
<a id="foo" href="#" data-str="bar" data-bool="true" data-num="15" data-json='{"fizz":["buzz"]}'>foo!</a>
$('#foo').data('str'); //`"bar"` $('#foo').data('bool'); //`true` $('#foo').data('num'); //`15` $('#foo').data('json'); //`{fizz:['buzz']}`
이 자동 캐스팅 능력은 위젯 및 플러그인을 인스턴스화 매우 편리합니다 :
$('.widget').each(function () { $(this).widget($(this).data()); //-or- $(this).widget($(this).data('widget')); });
당신이 절대적으로 문자열로 원래 값이 있어야합니다 경우에, 당신은) (.attr 사용해야합니다 :
<a id="foo" href="#" data-color="ABC123"></a> <a id="bar" href="#" data-color="654321"></a>
$('#foo').data('color').length; //6 $('#bar').data('color').length; //undefined, length isn't a property of numbers $('#foo').attr('data-color').length; //6 $('#bar').attr('data-color').length; //6
이것은 인위적인 예였다. 색상 값을 저장하기 위해, 나는 숫자 진수 표기 (즉 0xABC123)를 사용하는 데 사용하지만, 그 진수를 지적 그것의 가치는 1.7.2 이전의 jQuery 버전에서 잘못 구문 분석, 더 이상 jQuery를 1.8 RC 1의 같은 번호로 해석되지 않습니다.
jQuery를 1.8 RC 1 자동 주조의 동작을 변경했습니다. 전에, 숫자의 유효한 표현을했다 어떤 형식 번호에 캐스트 할 것입니다. 자신의 표현 숙박 같은 경우 이제 숫자입니다 값은 자동 캐스트입니다. 이것은, 예와 함께 설명된다.
<a id="foo" href="#" data-int="1000" data-decimal="1000.00" data-scientific="1e3" data-hex="0x03e8">foo!</a>
// pre 1.8 post 1.8 $('#foo').data('int'); // 1000 1000 $('#foo').data('decimal'); // 1000 "1000.00" $('#foo').data('scientific'); // 1000 "1e3" $('#foo').data('hex'); // 1000 "0x03e8"
액세스의 숫자 값으로 대체 숫자 구문을 사용하려는 경우, 같은 단항 + 연산자로, 먼저 번호 값을 캐스팅해야합니다.
+$('#foo').data('hex'); // 1000
2.이 저장되며이 방법을 액세스 할 곳 두 주된 차이점이다.
이 저장되며이 방법을 액세스 할 곳 두 주된 차이점이다.
$ .fn.attr 저장 요소의 기본 API에서 사용할 수 있습니다 또한 검사에 공개하고, 속성의 요소에 직접 정보를 제공합니다.
.fn.data 저장에게 터무니없이 애매한 장소의 정보를 $. 이는 로컬 데이터 정의 함수의 인스턴스를 통해 폐쇄 된 로컬 변수라는 data_user에 위치한다. 이 변수는 직접 jQuery를 외부에서 액세스 할 수 없습니다.
ATTR와 데이터 세트 ()
.DATA와 데이터 세트 ()
3.당신은 포함 사용자 정의 데이터에 데이터 - * 속성을 사용할 수 있습니다. 데이터 - * 우리에게 삽입 사용자 정의 데이터에 대한 능력을 모든 HTML 요소에 속성을 제공합니다 속성.
당신은 포함 사용자 정의 데이터에 데이터 - * 속성을 사용할 수 있습니다. 데이터 - * 우리에게 삽입 사용자 정의 데이터에 대한 능력을 모든 HTML 요소에 속성을 제공합니다 속성.
의 jQuery .DATA () 메소드는 순환 참조에서 안전하고, 따라서 메모리에서 누출되는 방식으로 DOM 요소 어떤 타입 / 세트 데이터를 얻을 수있다.
매칭 된 세트의 첫 번째 요소 jQuery를 .attr () 메소드는 GET / SET 속성치.
예:
<span id="test" title="foo" data-kind="primary">foo</span> $("#test").attr("title"); $("#test").attr("data-kind"); $("#test").data("kind"); $("#test").data("value", "bar");
from https://stackoverflow.com/questions/7261619/jquery-data-vs-attr by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] jQuery를 : 아약스 호출 성공 후 반환 데이터 [중복] (0) 2020.09.22 [JQUERY] 어떻게 일시적으로 스크롤 해제하는 방법? (0) 2020.09.22 [JQUERY] HTML은 텍스트 입력은 숫자 만 입력 가능 (0) 2020.09.22 [JQUERY] 직접 대 위임 -의 jQuery CSTE 연구진은 () (0) 2020.09.22 [JQUERY] 모든 jQuery를 Ajax 요청이 완료 될 때까지 기다립니다? (0) 2020.09.22