2013-02-25 88 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