Javascript 如何完全替换HTML元素上的数据对象

Javascript 如何完全替换HTML元素上的数据对象,javascript,jquery,html,object,Javascript,Jquery,Html,Object,有没有更快的方法来替换elements数据对象中的所有内容 //get old data keys to delete var old_data = $(".f")[0].dataset; for (var key in old_data){ delete old_data[key]; } //new data to attach to `.f` element var new_data = $(".s")[0].dataset; for (var key in new_data){

有没有更快的方法来替换elements数据对象中的所有内容

//get old data keys to delete
var old_data = $(".f")[0].dataset;

for (var key in old_data){
  delete old_data[key];
}
//new data to attach to `.f` element
var new_data = $(".s")[0].dataset;

for (var key in new_data){
  $(".f").data(key, new_data[key]);
}

console.log($(".f").data());
我尝试过更简洁的变化,比如

  //errors
  $(".f").data() = {};
  $(".f").data(new_data);

  //doesn't delete old keys/values
  var new_data = $(".s").data();
  $(".f").data(new_data);

有更快的方法吗?

有一个jQuery内置函数
jQuery.removeData(元素[,名称])


请参阅参考

您需要同时使用和API

[列表]-一个数组或空格分隔的字符串,用于命名数据段 删除。在没有参数的情况下调用时,.removeData()将删除所有 价值观

更新

由于
.removeAttr([name])
会“强制”您一次移除一件,因此您也可以使用:

.removeData( [name] );
请记住,
[name]
的格式分别为
数据-
。例如,要删除数据myid,请使用:

.removeAttr( 'data-myid' ); //and 
.removeData( 'myid' );

@Karl AndréGagnon不幸的是,这似乎只会删除jQuery显式设置的数据属性,而不是内联
data sth=“123”
谢谢。您是否尝试删除数据集本身,如
delete$(.f”)[0].dataset
?不删除数据-*属性不幸的是,它似乎只删除使用jQuery显式设置的数据属性,而不是内联数据sth=“123”谢谢。我猜不会更快。removeAttr([name])工作。
.removeData([list])没有运气。谢谢你的帮助!由于
.removeAttr([name])
强制您一次移除一块,因此您最好使用
.removeatta([name])
。请记住,
[name]
的格式分别为
数据-
。例如,要删除
数据myid
请使用
.removeAttr('data myid')
.removeData('myid')
.removeAttr( 'data-myid' ); //and 
.removeData( 'myid' );