他のIDを持つ2つのDIV要素に同じIDを持つ2つの要素を持つことは普通ですか:更新
-
29-09-2019 - |
質問
2つの要素が同じIDを持つことはできないことを知っています。しかし、それは起こるので、私のプロジェクトでは、このような他のDIVで同じIDを持つ2つの要素があります
<div id="div1">
<img id="loading" />
</div>
<div id="div2">
<img id="loading" />
</div>
およびCSS:
#div1 #loading
{
some style here...
}
#div2 #loading
{
another style here...
}
私のためにはうまくいきますが、そうすることは勧められないのでしょうか?
ありがとう
アップデート
はい、私は知っています、私はクラスを使用することができます、そしてそれはそうするために強く推奨されますが、私はこのIDの使用に潜在的なリスクがあることを知りたいですか?たとえば私が書いたとき、私はいいえと思います
$("#div1 #loading")...
それはユニークな要素になります。ではない?
最終更新
あなたがそれをする理由があるならば、提案されたプリンシペを使用してください! ;)
解決 10
https://www.w3.org/tr/1999/rec-html401-19991224/struct/global.html#adef-id
しかし!
あなたがあなたのプロジェクトでそれを必要とするならば、あなたはそれを使用することができます、私の中で提案されたように 質問の最終更新!
他のヒント
IDをクラスに変更します。重複したIDを提供することは良い考えではありません。
クラスで同じロールノーを持っている2人の生徒を考えてください。彼らが試験結果を得ることを想像してください。学校はどのようにしてマークシートを認識できますか?
あなたの方法はクロスブラウザの互換性がなく、JavaScriptのコーディングやフォームなどの投稿中に多くの影響を与えます
クラスを使用して同じ効果を得ることができます
見る
<div id="div1">
<img class="loading" />
</div>
<div id="div2">
<img class="loading" />
</div>
およびCSS:
#div1 .loading
{
some style here...
}
#div2 .loading
{
another style here...
}
IDは必要です (したほうがいい) 一意であること!!
ほとんどのブラウザでJSを介してそれを選択するのに問題があります - より良い使用クラス
大きな理由は、JavaScript DOM操作のためです。あなたの場合、あなたがこのようなことをするなら...
document.getElementById("loading")
... JavaScriptは最初の要素と最初の要素のみを返します。深刻なドムウォーキングなしで、残りの部分にアクセスする方法はありません。
誰もそれを投稿していないからといって - HTML仕様、IDのセクション, 、言う:
id = name [cs
この属性は、名前を要素に割り当てます。この名前はドキュメントで一意でなければなりません。
はい、あなたは正しいです、そうすることは推奨されません。 IDは常に一意でなければなりません(たとえば、JavaScriptを使用して要素を選択する場合)。同じスタイルをDIVSに追加するだけの場合は、CSSクラスを使用してください。
IDは一意である必要があるため、ID1とID2は問題ありませんが、同じスタイルの多くの要素では、HTMLクラスとCSSクラスセレクターを使用してください。
.loading
{
styles here
}
これらは、ページで何度も繰り返されることが許可されています:)
普通ですか?いいえ。
お勧めしますか?絶対にありません!実際には禁止されています(ただし、執行は弱いです)。
しかし、それは(どうやら)うまくいくので...
IDは要素を区別するために使用されます。さまざまな理由で一意でなければなりません。そのうちの1つはJavaScriptの使用です。IDを複製している場合、GetElementByIDのように機能することです。 JSは各ブラウザで自己実装されているため、異なるブラウザで行います。
#DIVロードや#div2の読み込みなどの構造を使用する場合は、両方のロードが同様の用途があるため、クラスである必要があり、このように使用されることが明らかに思えます。
#div1.loadingおよび#div2.loading
また、この構文を使用する1つのプラスは、共通のスタイルをこのようにロードすることです。
.loading {両方の負荷に共通するスタイル}
#div1.loading {div1のロードによってのみ使用されるスタイル}
#div2.loading {div2のロードによってのみ使用されるスタイル}
検証と純粋主義者主義はさておき、それは完全に機能的です。しかし、その#Loading IDを使用して、jQuery効果またはCSS効果が1つ以上の要素に適用されることを発見した場合、私は間違いなくイライラするでしょう。
要素で私を使用するのは悪い習慣です。私は彼らの名前の識別でユニークな理解のために何かを与えるからです。そして第二に、私たちはCSSでそれを使用しますが、JavaScriptではこの悪い練習です。このクラスと学生の良い例。
だからこれをしないでください。
私は、常に「ユニーク」を使用すると言っている人々に同意しません。つまり、あなたがラベルを付けるたびに異なるIDを意味します。私が計算機を作っている私の場合など、その許容可能な場合があります。
JavaScriptは数学を実行し、ID = "合計"で結果をDIVに出力しています。ただし、2つの異なる場所にあるために、まったく同じ「合計」が必要です。この場合、同じIDを持つ2つの異なるDivを使用しないのはなぜですか?両方のボックスで同じ数字が必要です。 JQueryを使用すると、数学を実行して出力し、両方のDivを同時に入力します。これが私が望むものです。
同じIDを使用して2 Divから情報を引き出している場合、リスクを理解している限り、私は自由に言ってください。あなたが自分自身を混乱させない限り、同じDiv IDに2つの異なる結果が必要です。