2012-03-19 10 views

risposta

112

jQuery .data() viene inizialmente popolato con i valori degli attributi data-, ma l'impostazione memorizza solo il nuovo valore associato in memoria. Non cambia l'attributo nel DOM. Per modificare l'attributo, è necessario utilizzare:

$('#one, #three').attr('data-test', 'changed'); 

La documentazione sono a http://api.jquery.com/jQuery.data/

+6

Okay, quindi '.data 'in realtà non manipola il DOM ma mantiene solo i dati in memoria? –

+5

@Adam, corretto. –

+3

Può essere utilizzato su qualsiasi elemento e può archiviare dati arbitrari (non solo stringhe). L'unico modo in cui si riferisce agli attributi "data-" è che per comodità viene automaticamente popolato con queste stringhe per cominciare. –

9

Ecco perché penso che .data() utilizzare un oggetto di cache speciale all'interno jQuery per memorizzare i dati (infatti è possibile oggetto evens negozio o tipes complesse di dati), se si controlla tutti gli attributi sono immutati. Se si desidera modificare l'attributo, utilizzare attr()