> 웹 프론트엔드 > JS 튜토리얼 > 부트스트랩 데이터与jquery .data_jquery

부트스트랩 데이터与jquery .data_jquery

WBOY
풀어 주다: 2016-05-16 16:42:21
원래의
1361명이 탐색했습니다.

jquery 공식 웹사이트에서는 .data 함수에 대해 다음과 같이 설명합니다. 일치하는 요소에 관련 데이터를 저장하거나 일치하는 요소 집합에서 첫 번째 요소의 지정된 이름 데이터에 저장된 값을 반환합니다.

저장소 키/값:

  $("body").data("foo", 52);
  $("body").data("bar", { myType: "test", count: 40 });
  $("body").data({ baz: [ 1, 2, 3 ] });
로그인 후 복사


키 값 가져오기

  $("body").data("foo"); // 52
  $("body").data(); // { foo: 52, bar: { myType: "test", count: 40 }, baz: [ 1, 2, 3 ] }
로그인 후 복사

위 내용은 익히기 쉽고 이해하기 쉽습니다. 오늘 부트스트랩 팝업마스크를 보다가 이런 코드를 접하게 되었는데

 $(document).on('click.modal.data-api', '[daTa-toggle="modal"]', function (e) {
  alert($(this).data().toggle) //这行是我加入的代码 打印的值是modal
  var $this = $(this)
   , href = $this.attr('href')
   , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
   , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())  
  e.preventDefault()
  $target
   .modal(option)
   .one('hide', function () {
    $this.focus()
   })
 })

로그인 후 복사

코드의 삼항 연산자 $target.data('modal')?'toggle': $.extend({ 원격:!/#/.test(href) && href }, $target.data() , $ this.data())

은 창이 처음으로 렌더링되는지 여부를 확인하는 것입니다. 창을 처음 렌더링할 때 실행

option = $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data()) //结果是 option= {remote: false,toggle: "modal"}
로그인 후 복사

$target.data()는 빈 객체 {}이고, $this.data()의 값은 {toggle: "modal"}입니다. 여기서 $this.data()의 반환 값이

에서 나오는 것은 말할 필요도 없습니다.

html 코드를 보면 click 메소드가 바인딩된 dom 객체의 속성값과 일치하는 것을 볼 수 있습니다. 다음은 바인딩된 dom 객체의 html 코드입니다

데모 모달 실행

내가 추가한 경고($(this).data().toggle) 코드에서 출력되는 값은 모달이므로 jquery로 만든 기사일 수밖에 없어서 jquery 소스코드를 연구한 결과, 정말 사실이에요!

다음은 jQuery.fn.data 함수의 코드 일부입니다. 키가 정의되지 않은 경우, 즉 매개변수 전달 없이 .data()를 호출하면 속성 이름이 data-는 일치하는 요소에 저장됩니다.

이 경우데모 모달 실행< a>, {toggle:"modal"} 키-값 쌍을

에 저장합니다.

관심 있는 학생들은 다음 jquery 코드를 사용해 볼 수 있습니다

    // Gets all values
    if ( key === undefined ) {
      if ( this.length ) {
        data = jQuery.data( elem );
        if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
          attrs = elem.attributes;
          for ( ; i < attrs.length; i++ ) {
            name = attrs[i].name;
            if ( name.indexOf("data-") === 0 ) {
              name = jQuery.camelCase( name.slice(5) );

              dataAttr( elem, name, data[ name ] );
            }
          }
          jQuery._data( elem, "parsedAttrs", true );
        }
      }
      return data;
    }

로그인 후 복사

jquery 공식 홈페이지의 도움말 문서를 자세히 읽어보니 다음과 같은 구절이 있습니다
HTML5 데이터-* 속성(HTML5 데이터-* 속성)
jQuery 1.4.3부터 HTML 5 data- 속성은 jQuery의 데이터 객체에 자동으로 참조됩니다. 포함된 대시가 속성을 처리하는 방식은 W3C HTML5 사양을 준수하기 위해 jQuery 1.6에서 변경되었습니다.

예를 들어 다음 HTML이 있다고 가정합니다.

<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"John"}'></div>
로그인 후 복사

아래의 모든 jQuery 코드가 작동합니다.

$("div").data("role") === "page";
$("div").data("lastValue") === 43;
$("div").data("hidden") === true;
$("div").data("options").name === "John"; 
로그인 후 복사

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿