2012-04-24 15 views
15

Dai un'occhiata a questo semplice esempio on jsfiddleattributo dati diventa integer

<div id ="a" data-siteid="00005">00005 turns into:</div> 
<div id="b" data-siteid="S00005">S00005 turns into: </div> 

codice

$('#a').append($('#a').data("siteid")); 
$('#b').append($('#b').data("siteid")); 

risultato

00005 turns into:5 
S00005 turns into: S00005 

Mi piacerebbe tornare "00005" e "S00005" .

+0

Siamo spiacenti, si tratta di una stringa, ma non la stringa di cui avevo bisogno. Il mio siteid è effettivamente la stringa '00005' – Larsi

+0

Sì ... ho capito la tua domanda, cancellato il mio commento. Un po 'più di spiegazione avrebbe comunque un aiuto;) Ad esempio, che 'S00005' è usato per * forzare * restituire una stringa e che questo dovrebbe mostrare che' 00005' viene convertito in un numero. –

risposta

19

Prova

$('#a').append($('#a').attr('data-siteid')); 
$('#b').append($('#b').attr('data-siteid')); 

From the jQuery Docs

Ogni tentativo è fatto per convertire la stringa in un valore JavaScript (questo include booleani, numeri, oggetti, array e null) altrimenti viene lasciato come una stringa. Per recuperare l'attributo del valore come una stringa senza alcun tentativo di convertirlo, utilizzare il metodo attr().

+0

Grazie mille per aver fornito anche il documento! – Larsi

+0

I documenti dicono chiaramente che 'attr()' restituisce una 'stringa' ma un semplice codice come' element.attr ('data-text', '12'); text = element.attr ('data-text'); 'restituisce un numero per me. Che cosa sto facendo di sbagliato? – jlh

2

Ogni tentativo per convertire la stringa in un valore JavaScript (questo include booleani, numeri, oggetti, matrici e null) altrimenti viene lasciato come una stringa. Per recuperare l'attributo del valore come una stringa senza alcun tentativo di convertirlo, utilizzare il metodo attr().

Da qui: http://api.jquery.com/data/#data-html5

+2

Penso che @binarious fosse più veloce :) – ant7

+0

ok, grazie comunque – Larsi

0

So che questo è un post un po 'più vecchio, ma un altro modo è possibile avvicinarsi a questo è quello di convertire l'attributo di dati valore in una stringa:

$('#a').data("siteid").toString() 

o

$('#a').data().siteid.toString() 

Alcuni esempi di come questo può funzionare:

> (12345).toString() 
"12345" 

> (14.5).toString() 
"14.5" 

> (-14.5).toString() 
"-14.5" 

> "bob".toString() 
"bob" 

> (true).toString() 
"true" 

> ({a: "b"}).toString() 
"[object Object]" 

>(function(){console.log("bob")}).toString() 
"function(){console.log("bob")}" 

La parentesi nell'esempio sono lì per evitare di assegnare le variabili, dal momento che non è possibile utilizzare direttamente #toString sul numero direttamente: 123.toString(), ma è possibile quando assegnato a una variabile o racchiuso tra parentesi: (123).toString().

Basta ricordare che non sarà possibile convertire null o undefined in una stringa.

anche qualcosa di interessante accade con gli array e valori non definiti e nulli: @FelixKling

> (["bob", 123, true, null, undefined, this]).toString() 
"bob,123,true,,,[object Window]"