53

データセットの仕様によると、 element.datasetはデータ属性を削除することをどのように意味していますか?検討:

<p id="example" data-a="string a" data-b="string b"></p>

これを行う場合:

var elem = document.querySelector('#example');
elem.dataset.a = null;
elem.dataset.b = undefined;
elem.dataset.c = false;
elem.dataset.d = 3;
elem.dataset.e = [1, 2, 3];
elem.dataset.f = {prop: 'value'};
elem.dataset.g = JSON.stringify({prop: 'value'});

ChromeとFirefoxではDOMは次のようになります。

<p id="example" 
   data-a="null" 
   data-b="undefined" 
   data-c="false" 
   data-d="3" 
   data-e="1,2,3" 
   data.f="[object Object]" 
   data.g="{"prop":"value"}"
></p>

Chrome/Firefoxの実装はsetAttributeを模倣しています。基本的に.toString()最初に適用されます。これは、属性が削除nullされると予想されるため、の扱いを除いて、私には理にかなっています。nullそれ以外の場合、データセットAPIは次と同等の機能をどのように実行しますか。

elem.removeAttribute('data-a');

そして、ブール属性についてはどうでしょうか。

<p data-something><p data-something="">うーんと同等です。

4

5 に答える 5

70

データセット要素を「削除」して削除しませんか?例えば:

<div id="a1" data-foo="bar">test</div>

<script>
var v = document.getElementById('a1');  
alert(v.dataset.foo);
delete v.dataset.foo;
alert(v.dataset.foo);
</script>
于 2012-02-08T20:55:54.187 に答える
2

かなり単純で直接的なアプローチ:

const someElement = document.querySelector('...');

Object.keys(someElement.dataset).forEach(dataKey => {
  delete someElement.dataset[dataKey];
});
于 2021-05-04T08:59:11.330 に答える
1

これは、すべてのdata-*属性を削除するためです。forループに条件を追加して、特定のデータ属性のみを削除できます。お役に立てれば :)

var elem = document.querySelector('#example');
var dataset = elem.dataset;
for (var key in dataset) {
    elem.removeAttribute("data-" + key.split(/(?=[A-Z])/).join("-").toLowerCase());
}
于 2019-05-24T02:24:25.730 に答える
0

MDNに従って、データセット要素を削除するには、削除演算子を使用する必要があります

属性を削除する場合は、削除演算子を使用できます。

const p = document.getElementById('example')
delete p.dataset.a
delete p.dataset.b

于 2020-02-20T07:29:20.973 に答える
-8
<div data-id="test">test</div>

$(document).ready(function(){
  $("div").removeAttr("data-id"); // removing the data attributes.
  console.log($("div").data("id")); // displays in the console.
});
于 2014-05-19T04:05:54.143 に答える