2012-04-27 6 views
8

Me gustaría comprobar si se ha aplicado un valor de datos jQuery a un objeto. Por ejemplo, el código de otras partes podrá ceder los datos a un objeto:¿La forma correcta de verificar el valor particular de .data() en un objeto jQuery?

$myObject.data('hello','world'); 

Por otra parte, quiero comprobar para ver si se le da un valor a la propiedad data hola.

¿Cuál es la forma correcta de manejar esto? .hasData parecía ser la elección obvia, pero parece no funcionar como lo hace 'hasClass', ya que parece que no puede pasarle un nombre de elemento de datos en particular.

Respuesta

15

Para obtener la propiedad (por ejemplo para la comparación), utilice .data con un argumento:

$myObject.data('hello') 

devuelve el valor undefined cuando no existen los datos.

+2

entonces, ¿usaría algo como 'if (typeof $ myObject.data ('hello') ===" undefined "))'? Eso debería funcionar, pero parece 'un-jQuery-ish';) –

+0

@DA. No hay un método "jQuery-ish" para su solicitud. Puedes escribir un plugin, si lo deseas. Todo lo que necesita es esta información: 1. Después de asignar un valor usando '.data()', el ** elemento DOM ** recibe una propiedad cuyo nombre es igual a '$ .expando'. 2. Esta propiedad, por ejemplo, "jQuery1710979685063056744", contiene un identificador. 3. Este identificador, ej. "29" corresponde a una clave en '$ .cache', ej. '$ .cache [29]'. Los datos se almacenan en '$ .cache [29] .data'. –

8

Compruebe si los datos existen y configúrelo si no.

if ($myObject.data('hello') === undefined) { 
    // data NOT set 
    $myObject.data('hello','world'); 
} else { 
    // data IS set 
} 
+1

parece que tiene corchetes en los lugares equivocados? –

-1

También puede probar:

$myObject.hasData("hello") 

devolverá verdadero si hay datos, y falso si no hay nada. El enlace en el sitio web jQuery: http://api.jquery.com/jquery.hasdata/

+0

Esta es la forma más correcta de hacer esta comprobación según el sitio web de jQuery. "La principal ventaja de jQuery.hasData (elemento) es que no crea y asocia un objeto de datos con el elemento si ninguno existe actualmente. Por el contrario, jQuery.data (elemento) siempre devuelve un objeto de datos a la persona que llama, creando uno si ningún objeto de datos existía previamente ". –

+6

@JamesWilson, es completamente incorrecto. Esto solo comprueba si hay datos en absoluto, y no es una propiedad de un objeto jQuery, sino más bien jQuery. – Dykam

+1

No funciona. Obtengo TypeError: $ (...). HasData no es una función. – sohtimsso1970

Cuestiones relacionadas