我一直在拼命寻找这个问题的答案,但没有找到任何答案。 我正在改进我正在创建的网站上的代码,从自定义''属性切换到HTML5 data-yyy属性。现在是我的问题。
$("#test ul li").click(function(event){
$(this).toggleClass("selected");
if($(this).hasClass("selected")){
if(jQuery.trim($("#input_value").val())){
$(this).data("special",{"value":jQuery.trim($("#input_value").val())});
}
}
else{
$(this).removeAttr("data-special");
}
});
单击某个li元素时会触发以下代码。切换一个类,在切换之后(是一个单词?),脚本会检查该元素是否具有切换类。如果它没有类(问题出在哪里),脚本应该删除属性“data-special”,删除数据。这根本不会发生!
如果添加
$("#test ul li").removeAttr("data-special");
在功能之外,一切都很好并按预期工作。有什么想法吗?
答案 0 :(得分:3)
您已将data-special
值导入.data()
,因此请使用.removeData()
。
$(this).removeData("special");
将属性值导入.data()
后,您需要在那里使用它。删除该属性不会删除.data()
。
如果您需要删除它们,那么您需要调用这两种方法,或者首先不要使用.data()
。
答案 1 :(得分:1)
这不是属性
$(本)。数据( “特殊”,{ “值”:jQuery.trim($( “#将input_value”)VAL())});
您将其存储在jquery缓存中。因此,如果你想删除它,你必须像指示的另一张海报一样,并使用removeData函数来消除它。