如何通过名称的一部分获取数据属性的值?
例如:
<div data-pcp-email="some text" data-pcp-order="some int" data-ref="some data"></div>
假设我希望所有数据属性都以data-pcp-
开头:结果必须是data-pcp-email
和data-pcp-order
答案 0 :(得分:4)
您可以获取属性名称所在的所有属性(及其值)以及“pcp”,如下所示:
// get an object map containing all data attributes
var data = $('selector').data();
// filter out what you need
for(var key in data) {
if(key.indexOf('pcp') === 0) { // attrib names begins with 'pcp' ?
console.log(key + ' => ' + data[key]);
}
}
答案 1 :(得分:1)
如果您只使用HTML或jQuery attr
函数设置属性:
$('div[data^=pcp-]')
如果使用jQuery的data
函数设置值,则必须使用filter
。
$('div').filter(function(){
var data = $(this).data();
for (var key in data){
return key.indexOf('pcp-') === 0;
}
});
如果您只想使用map
:
var values = $('div').map(function () {
var data = $(this).data();
var results = [];
for (var key in data) {
if (key.indexOf('pcp') === 0) results.push({
key: key,
value: data[key]
});
}
if (results.length)
return results;
}).get();
console.log(JSON.stringify(values));
答案 2 :(得分:-2)
Use the "attribute begins with" jQuery selector:
$('div[data^=pcp-]')