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

时间:2014-10-14 15:16:13

标签: javascript jquery html object

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

//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);

有更快的方法吗?

2 个答案:

答案 0 :(得分:1)

您需要同时使用jQuery .removeDatajQuery .removeAttr() API。

.removeData( [list] ); 
.removeAttr( [name] );
  

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

<强>更新

由于.removeAttr( [name] )'强制'你一次删除一件,你也可以使用:

.removeData( [name] );

请注意,[name]的格式分别为data-<name><name>。例如,删除data-myid使用:

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

答案 1 :(得分:0)

有一个jQuery构建函数jQuery.removeData( element [, name ] )

参见参考here