ダウンロードできる一連のファイルを一覧表示するサイト ハットがあります。カスタム属性 docType は、ファイル拡張子に基づいて設定されます。拡張子がない場合、docType は「unknownDoc」に設定されます。CSS ファイルは次のようになります。
.TitleColumn[docType="pdf"]
{
background: url("/images/common/icons/pdf.png") no-repeat left center;
}
.TitleColumn[docType="doc"], TitleColumn[docType="docx"]
{
background: url("/images/common/icons/word.png") no-repeat left center;
}
.TitleColumn[docType="unknownDoc"]
{
background: url("/images/common/icons/unknownDoc.png") no-repeat left center;
}
まだ CSS スタイルが設定されていないドキュメントをユーザーがアップロードする可能性は十分にあります。この場合、アイテムには docType がありますが、背景画像はありません。このような場合、unknownDoc スタイルを適用したいと考えています。だから私は以下を使用します:
$('.TitleColumn').each(function (index) {
var hasNoDocImage = $(this).css("background-image") == "none";
var docType = $(this).attr("docType");
if (hasNoDocImage && docType) {
$(this).attr("docType", "unknownDoc");
$(this).addClass("TitleColumn[docType=\"unknownDoc\"]");
}
});
これはうまくいきます。私が理解していないのは、なぜ addClass ステートメントを使用する必要があるのですか? attr または addClass 自体は機能しません。属性を追加しても、ブラウザは addClass のように新しい属性に基づいてアイテムのスタイルを変更しません。これは jQuery のことですか、それともブラウザのことですか?
これを行うより良い方法はありますか?
docType カスタム属性ではなくクラスだけを使用してみましたが、特に将来、要素に追加のクラスが追加される可能性がある場合は、面倒です。