2012-09-27 14 views
8

¿Hay alguna manera de evitar que la función .data() convierta los datos a otro tipo?Detener jQuery .data() de la conversión

Por ejemplo, con el código HTML <div data-code-name="007">Bond, James</div>

$("div").data("codeName") retornos 7 en lugar de "007"

Ejemplo: http://jsfiddle.net/dMHS4/

Actualización: acabo de notar en el violín que si cambia a jQuery 1.8.2 es no convertir. http://jsfiddle.net/dMHS4/2/

Actualización:Has jQuery 1.8 changed how .data() returns the value?

Respuesta

9

Uso .attr() en lugar de .data():

$("div").attr("data-code-name") 

http://jsfiddle.net/dMHS4/1/


tomada de la jQuery documentation:

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, utilice el método attr()

+2

+1. Esto es del documento oficial 'data':' Se intenta convertir la cadena a un valor de JavaScript (esto incluye booleanos, números, objetos, matrices y nulo); 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() ' –

+0

@ClaudioRedi Cheers, agregado a la respuesta – Curt

+0

Sí, pero vea mi actualización. jQuery 1.7.2 realiza la conversión, 1.8.2 no. ¿Ha cambiado la funcionalidad documentada con la nueva versión? – Homer