Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除所有动态';数据属性';元素的_Javascript_Jquery_Html_Custom Data Attribute - Fatal编程技术网

Javascript 删除所有动态';数据属性';元素的

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

我有一个div,其中在一些标记上添加了动态数据属性。 (数据名称-由脚本动态生成的属性,因此我的脚本无法知道数据属性的名称)

但问题是我不知道要添加的数据属性的名称。 将要添加的数据属性是动态的,我无法控制它

删除div并重新插入div不是一个选项。 请帮忙。
提前感谢

您可以使用以下代码:

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