有没有更快的方法来替换元素数据对象中的所有内容?
//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);
有更快的方法吗?
答案 0 :(得分:1)
您需要同时使用jQuery .removeData和jQuery .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