2010-07-20 6 views
3

Est-il possible et intelligent de stocker des données supplémentaires dans un objet jQuery?jQuery: Stocke des données/informations supplémentaires/supplémentaires dans un objet jQuery?

À l'heure actuelle, j'ai des objets qui contiennent des données mais ces objets ont également une représentation visuelle de ces données. Cela fonctionne mais j'ai beaucoup de code pour les garder synchronisés.

Par exemple, si vous supprimez un objet du dom, je dois également supprimer l'objet associé du tableau d'objets. La suppression est assez simple mais cela devient un peu plus compliqué si je commence à trier/déplacer les objets.

Répondre

11

Vous pouvez utiliser $.data() pour cette :)

Par exemple:

$.data(element, 'varName', value);  //store 
var value = $.data(element, 'varName'); //get 

Ou utilisez la méthode objet .data():

$("#ElementID").data('varName', value);  //store 
var value = $("#ElementID").data('varName'); //get 

Cela ne stocke pas les données sur l'objet, plutôt il stocke dans $.cache (essayez-le dans votre console sur cette page), mais il est associé à l'objet, via this[$.expando].

Toutefois, si vous appelez le .empty() qui supprime un objet, ou .remove(), il effectuera le nettoyage pour vous. Vous pouvez également appeler .removeData() ou $.removeData() pour le supprimer directement.

+0

Wow, c'est parfait. Merci d'avoir répondu. – Pickels

+0

@Pickels - Bienvenue :) J'ai ajouté quelques autres méthodes à la fin qui pourraient vous intéresser, puisque vous gérez les objets directement (du moins, c'est mon opinion sur la question). –

+0

Je pensais avoir déjà lu sur le cache, ce qui m'a fait me demander d'abord s'il était possible de stocker des données connexes. Merci pour les méthodes supplémentaires cela rendra mon code beaucoup moins complexe. – Pickels