Est-il normal d'avoir deux éléments avec la même id dans deux éléments div id avec d'autres: mise à jour

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

Question

Je sais, que deux éléments ne peut VHA le même identifiant. Mais il est arrive si, dans mon projet, j'ai deux éléments avec la même id dans d'autres divs, comme celui-ci

<div id="div1">
     <img id="loading" />
</div>
<div id="div2">
     <img id="loading" />
</div>

et css:

#div1 #loading
{
    some style here...
}
#div2 #loading
{
    another style here...
}

fonctionne bien pour moi, mais peut-être il ne reccomended à faire par cela?

Merci

UPDATE

Oui, je sais, Thet je peux utiliser des classes, et il est fortement recommandé de le faire par, mais je veux savoir est-il un risque potentiel dans cet usage id? Je pense que non, becouse quand j'écrit par exemple

$("#div1 #loading")... il devient un élément unique. est-ce pas?

Mise à jour finale

Utilisation suggérée principe, si vous avez des raisons de le faire! ;)

Était-ce utile?

La solution 10

https: // www .w3.org / TR / 1999 / REC-html401-19991224 / struct / global.html # ADEF-id

Si vous avez besoin dans votre projet, vous pouvez l'utiliser, comme suggéré dans mon Question mise à jour finale

Autres conseils

Changez votre identifiant à la classe. Il est pas une bonne idée de donner id double.

Pensez deux étudiants ayant même rouleau pas dans une classe. Imaginez-les obtenir résultat de l'examen. Comment l'école est en mesure de reconnaître le relevé de notes?

Votre navigateur n'est pas compatible croix, et affectera beaucoup pendant le codage JavaScript, et la forme, etc. affiché le

Vous pouvez obtenir le même effet en utilisant la classe

voir

<div id="div1">
     <img class="loading" />
</div>
<div id="div2">
     <img class="loading" />
</div>

et css:

#div1 .loading
{
    some style here...
}
#div2 .loading
{
    another style here...
}

un must id (devrait) unique !!

vous aurez des problèmes en sélectionnant via JS dans la plupart des navigateurs - meilleure classe d'utilisation

La grande raison est pour la manipulation JavaScript DOM. Dans votre cas, si vous faites quelque chose comme ça ...

document.getElementById("loading")

... JavaScript renverra le premier élément, et le premier élément seulement. Vous aurez aucun moyen d'accéder au reste d'entre eux sans une marche sérieuse DOM.

Juste parce que personne d'autre a posté - la spécification HTML, section ID, qui dit:

  

id = nom [CS]

     

Cet attribut assigne   un nom d'un élément. Ce nom doit   être unique dans un document.

Oui, vous avez raison, il n'est pas recommened de le faire. Un ID doit toujours être unique (par exemple si vous voulez sélectionner l'élément avec javascript). Si vous voulez juste ajouter le même style aux divs, il suffit d'utiliser la classe css.

unique :

  

En mathématiques et la logique, l'expression « il y a une seule et unique » est utilisé pour indiquer exactement un objet avec une certaine propriété existe.

#div1 #loading ne résout pas le fait que vous avez deux instances de #loading dans votre document . Donc, non, ne pas le faire.

ID doit être unique, donc ID1 et ID2 sont très bien, mais pour de nombreux éléments avec le même style, utilisez une classe HTML et sélecteur de classe CSS:

.loading
{
styles here
}

Ceux-ci sont autorisés à répéter autant de fois que vous le souhaitez sur une page:)

Est-il normal? Non.

est-il recommandé? Définitivement pas! Il est en fait interdit (mais l'application est faible).

Mais il (apparemment) œuvres, alors ...

Id sont utilisés pour distinguer les éléments, ils doivent être uniques pour des raisons différentes, l'un d'eux est l'utilisation de javascript, la fonction comme getElementById va pas bien si vous avez un doublon d'ID, vous ne serez pas en mesure de prédire ce il va faire sur autre navigateur que JS est auto-mis en œuvre sur chaque navigateur différemment.

Si vous souhaitez utiliser une structure comme #div chargement et chargement # de div2 il semble clair que les deux utilisations similaires de chargement ont donc ils devraient être des classes et seraient utilisées comme ceci

# div1.loading et # div2.loading

En outre un plus d'utiliser cette syntaxe serait de mettre le style commun dans .loading comme ceci

{.loading style commun à la fois le chargement}

# {div1.loading style utilisé uniquement par le chargement dans div1}

# {div2.loading style utilisé uniquement par le chargement dans div2}

validation et puriste-isme de côté, il est parfaitement fonctionnel. Mais je serais certainement ennuyé si j'utilise cet identifiant #loading et trouve qu'un effet jquery ou un effet de css applique à plus de 1 element.Do me dire si IE6 ou 7 ou Firefox 1.x ou 2.x ruines code.

Il pratique est mauvais d'utiliser j'avais sur l'élément. Parce que j'avais donner quelque chose pour comprendre unique avec leur identification de nom. Et deuxième chose que nous utilisons dans le CSS mais en JavaScript cette mauvaise pratique. Donc bon exemple pour cette classe et l'élève.

Alors ne le faites pas.

Je suis en désaccord sur les gens disent de toujours utiliser un « unique », ce qui signifie différent à chaque fois ID vous étiquetez un. Parfois, il est acceptable, comme mon cas où je fais une calculatrice.

Le javascript est fait le calcul et sortir le résultat dans le div avec l'id = « total ». Je dois même exact « total » d'être dans 2 endroits différents cependant. Dans ce cas, pourquoi ne serais-je utiliser deux div est avec le même ID? J'ai besoin du même nombre dans les deux cases. Avec jQuery, je joue et sortie le calcul une fois et il remplit à la fois div de en même temps, ce que je veux.

Tant que vous comprenez les risques où si vous tiriez les informations de ces 2 div est avec le même ID, alors je dis sentir libre. Tant que vous ne vous confondez et avez besoin de 2 résultats différents dans la même ID div.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top