data-*
要素の属性を一覧表示する方法が必要です。私は使用しますObject.keys(element.dataset)
が、IE9.0はdataset
サポートされていません。IE 9.0(およびChrome、Firefox、Safari)で機能する方法でこれを行うにはどうすればよいですか?
質問する
4074 次
4 に答える
6
element.attributes
NamedNodeList
要素のすべての属性を含むを提供します。
属性名がで始まる場合は、属性名を確認してくださいdata-
var attributes = element.attributes,
i = attributes.length;
for (; i--; ){
if (/^data-.*/.test(attributes[i].name)) {
console.log(attributes[i].name);
}
}
<ahref="http://jsfiddle.net/Fv6MM/">例
于 2012-09-09T17:06:27.427 に答える
2
jQueryを使用している場合は、$。data()メソッドを介してdata- *属性にアクセスできます:http: //api.jquery.com/data/
于 2013-08-02T09:02:58.947 に答える
2
これが必要でしたが、キーへのアクセスも必要だったので、Andreasによって提供されたソリューションに基づいて関数を作成しました。
Element.prototype.dataset_simulated = function(){
var attributes = this.attributes;
var simulatedDataset = {};
for (var i = attributes.length; i--; ){
if (/^data-.*/.test(attributes[i].name)) {
var key = attributes[i].name.replace('data-', '');
var value = this.getAttribute(attributes[i].name);
simulatedDataset[key] = value;
}
}
return simulatedDataset;
};
そして、それを使用するには、を行う代わりにelement.dataset
、を行いますelement.dataset_simulated()
。
これがフィドルです
編集:
IE <8もをサポートしていないようですElement.prototype
。したがって、これは次のような使用法の関数である可能性がありますdataset_simulated(elem)
。
function dataset_simulated(elem){
var attributes = elem.attributes;
var simulatedDataset = {};
for (var i = attributes.length; i--; ){
if (/^data-.*/.test(attributes[i].name)) {
var key = attributes[i].name.replace('data-', '');
var value = elem.getAttribute(attributes[i].name);
simulatedDataset[key] = value;
}
}
return simulatedDataset;
};
于 2013-12-17T15:44:24.083 に答える
0
次の方法を試すこともできます。
[dom_element].getAttribute('[your data-* attribute name]');
于 2019-01-23T10:41:02.977 に答える