1

この質問に対する答えを必死に探していましたが、何も見つかりませんでした。現在、作成中の Web サイトのコードを改善し、,,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 に答える