1

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

在函数之外,一切都很好并且按预期工作。有任何想法吗?

4

2 回答 2

3

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

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

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

如果您需要将它们都删除,那么您需要调用这两种方法,或者一开始就不要使用.data()它们。

于 2012-02-17T01:17:49.210 回答
1

这不是属性

$(this).data("special",{"value":jQuery.trim($("#input_value").val())});

您将其存储在 jquery 缓存中。因此,如果你想删除它,你必须按照另一张海报的说明进行操作,并使用 removeData 函数将其删除。

于 2012-02-17T01:22:27.230 回答