Maison > interface Web > js tutoriel > le corps du texte

données d'amorçage - jquery .data_jquery

WBOY
Libérer: 2016-05-16 16:42:21
original
1324 Les gens l'ont consulté

La description de la fonction .data sur le site officiel de jquery est la suivante : stocker toutes les données pertinentes sur l'élément correspondant ou renvoyer la valeur stockée dans les données du prénom du premier élément de l'ensemble d'éléments correspondant.

Clé/valeur de stockage :

  $("body").data("foo", 52);
  $("body").data("bar", { myType: "test", count: 40 });
  $("body").data({ baz: [ 1, 2, 3 ] });
Copier après la connexion


Obtenez la valeur clé

  $("body").data("foo"); // 52
  $("body").data(); // { foo: 52, bar: { myType: "test", count: 40 }, baz: [ 1, 2, 3 ] }
Copier après la connexion

Ce qui précède est facile à maîtriser et à comprendre. Aujourd'hui, lorsque je regardais le masque contextuel de bootstrap, j'ai rencontré un tel morceau de code qui m'a rendu confus

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

Copier après la connexion

Opérateur ternaire $target.data('modal')?'toggle' dans le code : $.extend({ remote:!/#/.test(href) && href }, $target.data() , $ this.data())

consiste à déterminer si la fenêtre est rendue pour la première fois. Exécuté lors du rendu de la fenêtre pour la première fois

option = $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data()) //结果是 option= {remote: false,toggle: "modal"}
Copier après la connexion

$target.data() est un objet vide {} et la valeur de $this.data() est {toggle: "modal"}. Il va sans dire ici d'où vient la valeur de retour de $this.data()

En regardant le code html, il s'avère que c'est la même chose que la valeur d'attribut de l'objet dom auquel la méthode click est liée. Ce qui suit est le code html de l'objet dom lié

.

Lancer la démo modal

La valeur imprimée par le code alert($(this).data().toggle) que j'ai ajouté est modale, donc cela ne peut être qu'un article réalisé par jquery, j'ai donc étudié le code source de jquery et j'ai trouvé qu'il c'est effectivement vrai !

Ce qui suit fait partie du code de la fonction jQuery.fn.data Lorsque la clé n'est pas définie, c'est-à-dire lorsque .data() est appelé sans passer de paramètres, la paire clé-valeur dont le nom d'attribut commence par. data- sera stocké dans l’élément correspondant.

Dans ce casLancer la démo modale< a>, enregistrez la paire clé-valeur {toggle:"modal"} dans

Les étudiants intéressés peuvent essayer le code jquery suivant

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

Copier après la connexion

J'ai lu en détail le document d'aide du site officiel de jquery et il y a le paragraphe suivant
Données HTML5-* Attributs (Données HTML5-* attributs)
À partir de jQuery 1.4.3, l'attribut data-HTML 5 sera automatiquement référencé dans l'objet de données de jQuery. La façon dont les tirets intégrés gèrent les attributs a changé dans jQuery 1.6 pour se conformer à la spécification HTML5 du W3C.

Par exemple, étant donné le code HTML suivant :

<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"John"}'></div>
Copier après la connexion

Tout le code jQuery ci-dessous fonctionnera.

$("div").data("role") === "page";
$("div").data("lastValue") === 43;
$("div").data("hidden") === true;
$("div").data("options").name === "John"; 
Copier après la connexion

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!