2013-02-25 94 views
1

我想知道元素是否存儲了特定的數據。js,查找/匹配/搜索元素是否按數據名稱存儲數據

例如,如果某個元素具有數據並且名稱爲DATA + etc

$el.data('DATA' + 'etc', value); 

如果我只知道名稱將是數據+的東西,但我不知道什麼是東西。

我該如何find out/search/match如果元素有數據,其名稱以'DATA'開頭。

alert($el.data('DATA') ? 'Yes' : 'No') 

非常感謝您的建議。

+0

您可以使用選擇做HTTP:嗎?//www.w3schools.com/jquery/jquery_ref_selectors.asp – SriN 2013-02-25 21:40:32

+1

@ user711819只有'數據 - *'屬性。雖然jQuery自動將這些變成了'.data()'可以訪問的值,但這對於其他這樣的'.data()''d值不起作用。 – 2013-02-25 21:43:53

回答

2

.data() with no arguments爲您提供附加數據的對象,因此您可以遍歷鍵以查看它們中的任何一個是否以'DATA'開頭。

var hasMatchingData = false; 
var allData = $el.data(); 
for (var key in allData) { 
    if (allData.hasOwnProperty(key) && key.match(/^DATA/g)) { 
     hasMatchingData = true; 
     break; 
    } 
} 
alert(hasMatchingData ? 'Yes' : 'No') 
+0

非常感謝你! – Till 2013-02-25 21:43:04

0

存儲'DATA'鍵的對象。然後將你的etc屬性添加到該對象上。

的檢查可以通過編寫

'propertyName' in object 
+0

名稱是'propertyName'+等,我想知道我怎麼能匹配是我不知道等等 – Till 2013-02-25 21:42:44