2012-04-24 8 views
15

Salida este sencillo ejemplo on jsfiddleatributo de datos se convierte en número entero

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

código

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

resultado

00005 turns into:5 
S00005 turns into: S00005 

me gustaría volver "00005" y "S00005" .

+0

Lo siento, es una cadena, pero no la cadena que necesitaba. Mi siteid es actual la cadena '00005' – Larsi

+0

Sí ... entendí tu pregunta, eliminé mi comentario. Sin embargo, una explicación un poco más ayudaría;) Por ejemplo, que 'S00005' se usa para * forzar * devolver una cadena y que esto debería mostrar que' 00005' se convierte en un número. –

Respuesta

19

Trate

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

From the jQuery Docs

se hará todo lo posible para convertir la cadena en un valor de JavaScript (esto incluye booleanos, números, objetos, matrices y nulo) de lo contrario, se deja como una cuerda. Para recuperar el atributo del valor como una cadena sin ningún intento de convertirlo, use el método attr().

+0

¡Muchas gracias por proporcionar también el documento! – Larsi

+0

Los documentos dicen claramente que 'attr()' devuelve una 'cadena' pero un código simple como' element.attr ('data-text', '12'); text = element.attr ('data-text'); 'devuelve un número para mí. ¿Qué estoy haciendo mal? – jlh

2

se hará todo lo posible para convertir la cadena en un valor JavaScript (esto incluye booleanos, números, objetos, matrices y nula) de lo contrario se deja como una cadena. Para recuperar el atributo del valor como una cadena sin ningún intento de convertirlo, use el método attr().

A partir de aquí: http://api.jquery.com/data/#data-html5

+2

Creo que @binarious fue más rápido :) – ant7

+0

bien, gracias de todos modos – Larsi

0

Sé que esto es un post un poco mayor, pero de otra manera se puede abordar esto es para convertir los datos de valor de atributo en una cadena:

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

o

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

Algunos ejemplos de cómo esto puede funcionar:

> (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")}" 

El paréntesis en el ejemplo están ahí para evitar la asignación de las variables, ya que no se puede utilizar directamente #toString en el número directamente: 123.toString(), pero se puede cuando se asigna a una variable o encerrado entre paréntesis: (123).toString().

Solo recuerda que no podrás convertir nulo o indefinido en una cadena.

también algo interesante ocurre con los vectores y valores indefinidos y nulos: @FelixKling

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