按名称的一部分查找数据属性

时间:2013-02-10 08:16:20

标签: javascript jquery

如何通过名称的一部分获取数据属性的值?
例如:

<div data-pcp-email="some text" data-pcp-order="some int" data-ref="some data"></div>

假设我希望所有数据属性都以data-pcp-开头:结果必须是data-pcp-emaildata-pcp-order

3 个答案:

答案 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]);
    }
}

以下是演示:http://jsfiddle.net/8waUn/1/

答案 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));

Live DEMO

答案 2 :(得分:-2)

相关问题