2012-04-27 23 views
8

我想檢查一下jQuery數據值是否已經應用到一個對象上。例如,代碼的其他地方可以分配數據對象:正確的方法來檢查jQuery對象中的特定.data()值?

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

在其他地方,我要檢查,看看是否這個值是給數據屬性打招呼。

處理這個問題的正確方法是什麼? .hasData似乎是明顯的選擇,但似乎不像'hasClass'那樣工作,因爲您似乎無法將特定的數據元素名稱傳遞給它。

回答

15

爲了獲得屬性(例如,用於比較),可以使用與.data一個參數:

$myObject.data('hello') 

它當所述數據不存在,則返回的值undefined

+2

所以,你會用'if(typeof $ myObject.data('hello') ===「undefined」))'?這應該工作,但似乎'un-jQuery-ish';) – 2012-04-27 22:14:10

+0

@DA。您的請求沒有「jQuery-ish」方法。如果你願意,你可以寫一個插件。所有你需要的是這個信息:1.在使用'.data()'賦值之後,** DOM元素**接收一個名稱等於'$ .expando'的屬性。這個屬性,例如「jQuery1710979685063056744」,包含一個標識符。 3.這個標識符,例如。 「29」對應於'$ .cache'中的一個鍵,例如。 '$ .cache [29]'。數據存儲在'$ .cache [29] .data'中。 – 2012-04-27 22:18:26

8

檢查數據是否存在,如果不存在則設置它。

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

你似乎在錯誤的地方有括號? – 2014-06-27 07:38:31

-1

你還可以嘗試:

$myObject.hasData("hello") 

是否有數據,它將返回true,假如果沒有什麼。在jQuery網站上的鏈接:http://api.jquery.com/jquery.hasdata/

+0

這是根據jQuery網站進行檢查的最正確方法。 「jQuery.hasData(element)的主要優點在於,如果沒有數據對象存在,它不會創建和關聯數據對象。相比之下,jQuery.data(element)總是返回一個數據對象給調用者,創建一個如果以前沒有數據對象存在。「 – 2015-02-23 23:53:59

+6

@JamesWilson,這完全不正確。這只是檢查是否有數據,它不是jQuery對象的屬性,而是jQuery本身。 – Dykam 2015-03-26 14:53:16

+1

不起作用。我得到TypeError:$(...)。hasData不是一個函數。 – sohtimsso1970 2016-07-20 22:37:33

相關問題