2012-04-27 8 views
8

Chciałbym sprawdzić, czy wartość danych jQuery została zastosowana do obiektu. Na przykład, kod gdzie indziej może przenieść dane do obiektu:Właściwy sposób sprawdzenia konkretnej wartości .data() w obiekcie jQuery?

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

indziej, chcę sprawdzić, czy wartość została podana do właściwości data cześć.

Jaki jest właściwy sposób postępowania z tym? .hasData wydawało się oczywistym wyborem, ale wygląda na to, że nie działa tak, jak "hasClass", ponieważ nie można przekazać do niego konkretnej nazwy elementu danych.

Odpowiedz

15

celu uzyskania właściwości (na przykład w celu porównania), należy .data z jednego argumentu

$myObject.data('hello') 

Zwraca wartość undefined gdy dane nie istnieje.

+2

więc, użyłbyś czegoś takiego jak 'if (typeof $ myObject.data ('hello') ===" undefined "))? To powinno działać, ale wydaje się "un-jQuery-ish";) –

+0

@DA. Dla twojej prośby nie ma metody "jQuery-ish". Możesz napisać wtyczkę, jeśli chcesz. Wszystko, czego potrzebujesz, to ta informacja: 1. Po przypisaniu wartości za pomocą '.data()', ** element DOM ** otrzymuje właściwość, której nazwa jest równa '$ .expando'. 2. Ta właściwość, np. "JQuery1710979685063056744", posiada identyfikator. 3. Ten identyfikator, np. "29" odpowiada kluczowi w '$ .cache', np. '$ .cache [29]'. Dane są przechowywane w '$ .cache [29] .data'. –

8

Sprawdź, czy dane istnieją i ustaw, jeśli nie.

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

wydajesz się mieć nawiasy w niewłaściwych miejscach? –

-1

Można też spróbować:

$myObject.hasData("hello") 

To zwróci true, jeśli nie ma danych, a fałszywy jeśli nie ma nic. Łącze na stronie jQuery: http://api.jquery.com/jquery.hasdata/

+0

To jest najbardziej poprawny sposób na sprawdzenie tego na stronie jQuery. "Podstawową zaletą jQuery.hasData (element) jest to, że nie tworzy on i nie kojarzy obiektu danych z elementem, jeśli żaden nie istnieje. Natomiast jQuery.data (element) zawsze zwraca obiekt danych do wywołującego, tworząc jeden obiekt jeśli wcześniej nie istniał obiekt danych. " –

+6

@JamesWilson, jest całkowicie niepoprawny. To tylko sprawdza, czy w ogóle istnieją dane, i nie jest to właściwość obiektu jQuery, ale sama jQuery. – Dykam

+1

Nie działa. Otrzymuję TypeError: $ (...). HasData nie jest funkcją. – sohtimsso1970

Powiązane problemy