2014-12-08 10 views
20

L'oggetto HTML:Come conservare il caso di un attributo di dati?

<div data-myAttribute="test"></div> 

Il codice:

var $o = $("div"); 

$.each($o.data(),function(k,v){ 
    console.log(k); 
    //writes 'myattribute' instead of 'myAttribute' 
}); 

Come faccio a preservare il caso dell'attributo?

+7

Si dovrebbe usare 'data-my-attribute' per ottenere' .data ('MyAttribute') ' –

+1

uno sguardo [qui] (http://stackoverflow.com/q/7641551/4202224) – empiric

+0

@ A.Wolff Grazie, mi è sembrato di aiutarmi. Nonostante il fatto che * non possa essere usato * in base alle risposte. –

risposta

7

Se il vostro obiettivo è quello di colpire myAttribute come chiave di dataset proprietà, è necessario utilizzare data-my-attribute:

<div data-my-attribute="test"></div> 

Vedi seguente link per quanto riguarda regola formato camelCase: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset

PS: come Izkata commentato esso :

Per riferimento per gli altri, jquery esegue anche la conversione in modo tale che $ div.data ('my-attribute') restituisce la stessa cosa di $ div.data ('myAttribute'). La proprietà del dataset vanilla javascript fa non farlo.

+0

Ho scelto la vostra risposta perché era utile e ha fatto ciò che avevo bisogno di fare Grazie. –

+2

Per riferimento per gli altri, jquery esegue anche la conversione in modo che '$ div.data ('my-attribute')' restituisca la stessa cosa di '$ div.data ('myAttribute')'. La proprietà 'dataset' vanilla javascript non lo fa. – Izkata

13

Non è possibile. I nomi degli attributi sono sempre in minuscolo in HTML5.

36

attributi dei dati HTML valido non possono contenere caratteri maiuscoli in ogni caso:

Dal W3: attributo data

Un'usanza è un attributo in nessun namespace cui nome inizia con la stringa "dati- ", ha almeno un carattere dopo il trattino , è compatibile con XML e non contiene caratteri nell'intervallo U + 0041 a U + 005A (LETTERA CAPITALE LETTERA a LATIN CAPITAL LETTER Z).

1

Come un addendum alla risposta @A. Wolff 's, è possibile applicare un -- ai dati degli attributi nome se si desidera capitali importanti.

<div data--my-attribute="test"></div> 

si tradurrà in una chiave di dati di MyAttribute

Problemi correlati