他のIDを持つ2つのDIV要素に同じIDを持つ2つの要素を持つことは普通ですか:更新

StackOverflow https://stackoverflow.com/questions/3093121

質問

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

enter image description here

しかし!

あなたがあなたのプロジェクトでそれを必要とするならば、あなたはそれを使用することができます、私の中で提案されたように 質問の最終更新!

他のヒント

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クラスを使用してください。

個性的:

数学と論理では、「1つだけが1つだけ」というフレーズが、特定のプロパティを持つ1つのオブジェクトが存在することを示すために使用されます。

#div1 #loading 2つのインスタンスがあるという事実を改善しません #loadingあなたの文書. 。だから、いや、そうしないでください。

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つの異なる結果が必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top