Hoe werkt databinding met het DOM-element?

Ik vraag me af, hoe jQuery willekeurige gegevens kan koppelen aan een willekeurig DOM-element zonder een HTML-kenmerk toe te voegen?

$('#div_id').data('suffix',(count++)) ;

Ik zie geen enkel data-attribuut dat associeert met een HTML-element in firebug HTML snapshot.

Wat is het mechanisme?

Hoewel deze methode voor gegevensopslag niet langer nodig is in HTML5, ben ik nog steeds geen duidelijk mechanisme voor jQuery-gegevensopslag.

3
ik denk het wel.....
toegevoegd de auteur P K, de bron
Misschien onderhoudt het een interne hash of zoiets.
toegevoegd de auteur Naftuli Kay, de bron

2 antwoord

Het voegt een eigenschap toe aan het element dat een getalswaarde bevat die een index vertegenwoordigt in het jQuery.cache -object, zoals:

$('#footer').data('suffix',"suffix");
jQuery.cache[ $('#footer')[0][jQuery.expando] ].suffix;
//"suffix"

Ik gebruikte "# footer" omdat ik de code op deze pagina heb uitgevoerd. Merk op dat de objectstructuur voor jQuery.cache [index] anders zal zijn voor elementen die ook gebeurtenissen hebben die door jQuery aan hen zijn gebonden.

Je moet het toch nooit in code aanraken, dus het maakt niet echt uit.

5
toegevoegd
Bedankt Esailija voor uitleg.
toegevoegd de auteur P K, de bron

JQuery voegt een eigenschap toe aan het DOM-element, de sleutel die het gebruikt om dingen op te zoeken in een interne hash.

Als u het DOM-element inspecteert in firebug of iets nadat u er gegevens aan hebt gekoppeld, ziet u de eigenschap jQueryxxxxxxxx

1
toegevoegd