data bootstrap与jquery .data_jquery

WBOY
Lepaskan: 2016-05-16 16:42:21
asal
1326 orang telah melayarinya

Penerangan fungsi .data pada tapak web rasmi jquery ialah: simpan sebarang data yang berkaitan pada elemen padanan atau kembalikan nilai yang disimpan dalam data nama yang diberikan bagi elemen pertama dalam set elemen dipadankan.

Kunci/nilai storan:

  $("body").data("foo", 52);
  $("body").data("bar", { myType: "test", count: 40 });
  $("body").data({ baz: [ 1, 2, 3 ] });
Salin selepas log masuk


Dapatkan nilai utama

  $("body").data("foo"); // 52
  $("body").data(); // { foo: 52, bar: { myType: "test", count: 40 }, baz: [ 1, 2, 3 ] }
Salin selepas log masuk

Perkara di atas mudah dikuasai dan difahami Hari ini semasa saya melihat topeng pop timbul bootstrap, saya menemui sekeping kod yang membuatkan saya keliru

 $(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()
   })
 })

Salin selepas log masuk

Pengendali ternary $target.data('modal')?'togol' dalam kod: $.extend({ remote:!/#/.test(href) && href }, $target.data() , $ this.data())

adalah untuk menentukan sama ada tetingkap dipaparkan buat kali pertama. Dilaksanakan semasa memaparkan tetingkap buat kali pertama

option = $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data()) //结果是 option= {remote: false,toggle: "modal"}
Salin selepas log masuk

$target.data() ialah objek kosong {} dan nilai $this.data() ialah {toggle: "modal"}. Tidak perlu dikatakan di sini dari mana nilai pulangan $this.data() berasal

Melihat pada kod html, ia berlaku sama dengan nilai atribut objek dom yang mana kaedah klik terikat Berikut ialah kod html objek dom terikat

Lancarkan mod demo

Nilai yang dicetak oleh amaran kod($(this).data().toggle) yang saya tambahkan ialah modal, jadi ini hanya boleh menjadi artikel yang dibuat oleh jquery, jadi saya mengkaji kod sumber jquery dan mendapati ia memang benar!

Berikut ialah sebahagian daripada kod dalam fungsi jQuery.fn.data Apabila kunci tidak ditakrifkan, iaitu, apabila .data() dipanggil tanpa lulus parameter, pasangan nilai kunci yang nama atributnya bermula dengan. data- akan disimpan dalam elemen padanan.

Dalam kes iniLancarkan mod demo< a>, simpan pasangan nilai kunci {toggle:"modal"} ke dalam

Pelajar yang berminat boleh mencuba kod jquery berikut

    // 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;
    }

Salin selepas log masuk

Saya membaca dokumen bantuan laman web rasmi jquery secara terperinci dan terdapat perenggan berikut
Data HTML5-* Atribut (data HTML5-* atribut)
Mulai jQuery 1.4.3, atribut data HTML 5 akan secara automatik dirujuk ke dalam objek data jQuery. Cara sempang terbenam mengendalikan atribut telah berubah dalam jQuery 1.6 untuk mematuhi spesifikasi W3C HTML5.

Sebagai contoh, diberikan HTML berikut:

<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"John"}'></div>
Salin selepas log masuk

Semua kod jQuery di bawah akan berfungsi.

$("div").data("role") === "page";
$("div").data("lastValue") === 43;
$("div").data("hidden") === true;
$("div").data("options").name === "John"; 
Salin selepas log masuk

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!