Javascript 删除所有动态';数据属性';元素的
我有一个div,其中在一些标记上添加了动态数据属性。 (数据名称-由脚本动态生成的属性,因此我的脚本无法知道数据属性的名称) 但问题是我不知道要添加的数据属性的名称。 将要添加的数据属性是动态的,我无法控制它 删除div并重新插入div不是一个选项。 请帮忙。Javascript 删除所有动态';数据属性';元素的,javascript,jquery,html,custom-data-attribute,Javascript,Jquery,Html,Custom Data Attribute,我有一个div,其中在一些标记上添加了动态数据属性。 (数据名称-由脚本动态生成的属性,因此我的脚本无法知道数据属性的名称) 但问题是我不知道要添加的数据属性的名称。 将要添加的数据属性是动态的,我无法控制它 删除div并重新插入div不是一个选项。 请帮忙。 提前感谢您可以使用以下代码: var data = $('div').data(); for(var i in data){ //for change $('div').attr("data-"+i,"somethin
提前感谢您可以使用以下代码:
var data = $('div').data();
for(var i in data){
//for change
$('div').attr("data-"+i,"something");
//for remove
$("div").removeAttr("data-" + i);
}
$('div').data()代码>准备var data
变量中所有数据属性的列表。
然后你就可以用它了。
这是
更新
由@Mottie建议
$.each($('div').data(), function (i) {
//for change
$('div').attr("data-"+i,"something");
//for remove
$("div").removeAttr("data-" + i);
});
我认为这个函数就是你在这里想要的。这将删除存储在元素上的所有数据
信息
.removeData()方法允许我们删除以前使用.data()设置的值。当使用键名调用时,.removeData()删除该特定值在没有参数的情况下调用时,将删除所有值。从jQuery的内部.data()缓存中删除数据不会影响文档中的任何HTML5数据属性;使用.removeAttr()删除这些
但是,它不会从元素中删除实际属性。为了删除实际属性,您需要提取现有属性的列表。您可以通过检查元素的data()
函数(在运行removeData
之前)来完成此操作
data()
函数将返回一个key=>value
对的对象,然后您可以使用该对象从元素中删除实际属性。您可以这样使用
var data = $("div").data();
var keys = $.map(data, function (value, key) {
return key;
});
for (i = 0; i < keys.length; i++) {
$("div").removeAttr("data-" + keys[i]);
}
jQuery中有一个删除属性的函数:更干净的是“”,您尝试过使用.removeAttr()@Pranav。我想他想删除所有数据-
属性,但他不知道所有的名称。看看这个主题。有一些函数允许您查找html标记的所有属性。您只需查看它,找到data-*属性,然后通过removeAttr()@Epsil0neR将其删除。他可以使用.data()获取所有数据属性。data-属性是动态的……因此,除非我有属性的名称,否则无法删除它。所以,removeData()将不起作用,因为它接受要删除的数据属性的名称removed@Prashant-是的。您可以使用data()
函数提取值。+1我不确定是谁投了反对票,但此方法有效。反对票请发表评论。@AnoopJoshi您的解决方案喜欢我的,但我不知道是谁投了反对票…您可以将其缩短为$。每个($('div').data(),函数(I){$('div”).removeAttr(“data-”+I)代码>()这是有效的。谢谢只有一个问题。。。它的组合属性,例如,如果属性是data hello one,它将值组合到helloOne(尝试在for in循环中为键[i]设置警报)Downvoter请注意注释…您的代码可以工作,但不会被如此多的投票,因为您使用的是for…in
循环
$.each($('div').data(), function (i) {
//for change
$('div').attr("data-"+i,"something");
//for remove
$("div").removeAttr("data-" + i);
});
var data = $("div").data();
var keys = $.map(data, function (value, key) {
return key;
});
for (i = 0; i < keys.length; i++) {
$("div").removeAttr("data-" + keys[i]);
}
$.each($('div').data(), function (i) {
$("div").removeAttr("data-" + i);
});