名前の一部でデータ属性の値を取得するにはどうすればよいですか?
例えば:
<div data-pcp-email="some text" data-pcp-order="some int" data-ref="some data"></div>
そして、すべてのデータ属性を次のように取得したいとしますdata-pcp-
。結果は次のようになりますdata-pcp-email
。 data-pcp-order
名前の一部でデータ属性の値を取得するにはどうすればよいですか?
例えば:
<div data-pcp-email="some text" data-pcp-order="some int" data-ref="some data"></div>
そして、すべてのデータ属性を次のように取得したいとしますdata-pcp-
。結果は次のようになりますdata-pcp-email
。 data-pcp-order
以下のように、属性名が「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]);
}
}
これがデモです:http://jsfiddle.net/8waUn/1/
HTMLまたはjQueryattr
関数でのみ属性を設定する場合:
$('div[data^=pcp-]')
data
jQueryの関数で値を設定する場合は、を使用する必要があります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));
$('div[data^=pcp-]')