jQuery removeAttribute()不起作用

时间:2012-02-17 01:15:58

标签: jquery html5 custom-data-attribute

我一直在拼命寻找这个问题的答案,但没有找到任何答案。 我正在改进我正在创建的网站上的代码,从自定义''属性切换到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");

在功能之外,一切都很好并按预期工作。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您已将data-special值导入.data(),因此请使用.removeData()

$(this).removeData("special");

将属性值导入.data()后,您需要在那里使用它。删除该属性不会删除.data()

如果您需要删除它们,那么您需要调用这两种方法,或者首先不要使用.data()

答案 1 :(得分:1)

这不是属性

  

$(本)。数据( “特殊”,{ “值”:jQuery.trim($( “#将input_value”)VAL())});

您将其存储在jquery缓存中。因此,如果你想删除它,你必须像指示的另一张海报一样,并使用removeData函数来消除它。