私はこの質問に対する回答を求めていますが、何も見つかりませんでした。 現在、作成中のウェブサイトのコードを改良しています。カスタム属性からHTML5のdata-yyy属性に切り替わりました。今私の問題をheres。jQuery removeAttribute()が動作しません
$("#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");
を追加した場合、それはすべての罰金だと期待通りに動作します。何か案は?
ありがとうございました!面白いことに、これは私がやったことです。私はコードでバグがあったに違いないでしょう。なぜなら、私は答えが見つからず、http://bugs.jqueryを見つけられなかったからです。 com/ticket/10784と私は、データyyyを削除の属性として扱うようにこれを理解しました(または誤解されています)。 もう1つ、または単に最初の場所で.data()を使用しないでください。 .data()を使用しないでください。あなたはそれが好きではない? –
@BenediktÓmarsson:ようこそ。 '.data()'の使用に関しては、複雑なデータを格納する必要がある場合に便利です。たとえば、オブジェクトを格納しているように見えます。 '{value:"特別な値 "}'実際にプロパティを追加したり削除したりするオブジェクトが必要な場合は、 '.data()'が便利です。しかし、あなたがやっているのは、その1つの 'data-'属性の値を読み込んでいるのであれば、 '.attr()'を使うほうが少し速いので、 'jQuery .cache'。 –
私は理解しています。私が書いているアプリケーションは、複雑な面で少しです(少なくとも私にとっては、ビジネスで新しい)。私はuser .attr()を使用していましたが、カスタム属性を使用しました。