Нормально ли иметь два элемента с одинаковым идентификатором в двух элементах div с другим идентификатором :обновленный

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

Вопрос

я знаю, что два элемента не могут иметь один и тот же идентификатор.Но так получилось, что в моем проекте у меня есть два элемента с одинаковым идентификатором в других divs, вот так

<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...
}

у меня работает нормально, но, может быть, это не рекомендуется делать таким образом?

Спасибо

Обновить

Да, я знаю, что я могу использовать классы, и настоятельно рекомендуется делать это с помощью so, но я хочу знать, есть ли какой-либо потенциальный риск в таком использовании id?я думаю, что нет, потому что, когда я писал, например

$("#div1 #loading")... это становится уникальным элементом.не так ли?

Окончательное обновление

Используйте предложенный principle, если у вас есть причины для этого!;)

Это было полезно?

Решение 10

https://www.w3.org/tr/1999/rec-html401-19991224/struct/global.html#adef-iD.

enter image description here

НО!

Если вам это нужно в своем проекте, вы можете использовать его, как предложено в моем Вопрос о последнем обновлении!

Другие советы

Измените свой идентификатор на класс. Это не очень хорошая идея, чтобы дать дублированный идентификатор.

Подумайте, два ученика, имеющие одинаковый бросок, нет в классе. Представьте, что они получают результат экзамена. Как школа сможет распознавать Markshet?

Ваш путь не совместим с Cross Browser, и будет сильно повлиять на кодирование 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...
}

удостоверение личности должно (должен) быть уникальный!!

У вас будут проблемы с выбором его через JS в большинстве браузеров - класс лучше использовать

Большая причина для манипуляций JavaScript DOM. В вашем случае, если вы делаете что-то вроде этого ...

document.getElementById("loading")

... JavaScript вернет первый элемент и только первый элемент. У вас не будет возможности получить доступ к остальным без какой -либо серьезной ходьбы DOM.

Просто потому, что никто другой не опубликовал это - Спецификация HTML, раздел на ID, что говорит:

ID = имя [CS

Этот атрибут назначает имя элементу. Это имя должно быть уникальным в документе.

Да, вы правы, это не рекомендуется сделать это. Идентификатор всегда должен быть уникальным (например, если вы хотите выбрать элемент с JavaScript). Если вы просто хотите добавить тот же стиль в Divs, просто используйте CSS Class.

Уникальный:

В математике и логике фраза «есть одна и только одна», для указания того, что именно один объект с определенным свойством существует.

#div1 #loading не исправляет тот факт, что у вас есть два экземпляра #loading в Ваш документ. Анкет Итак, нет, не делай этого.

Идентификаторы должны быть уникальными, поэтому ID1 и ID2 в порядке, но для многих элементов с тем же стилем используйте класс HTML и селектор класса CSS:

.loading
{
styles here
}

Это разрешено повторяться столько раз, сколько вы хотите на странице :)

Это нормально? Нет.

Это рекомендуется? Точно нет! На самом деле это запрещено (но правоприменение слабак).

Но это (видимо) работает, так ...

Id используются для различения элементов, они должны быть уникальными по разным причинам, одной из них является использование javascript, функция типа getElementById не будет хорошо работать, если у вас дублированный ID, вы не сможете предсказать, что она будет делать в разных браузерах, поскольку JS самореализуется в каждом браузере по-разному.

Если вы хотите использовать структуру типа #div loading и #div2 loading, кажется очевидным, что обе загрузки имеют схожее применение, поэтому они должны быть классами и использоваться следующим образом

#div1.загрузка и #div2.загрузка

Также одним из плюсов использования этого синтаксиса было бы использование общего стиля в файле .loading следующим образом

.загрузка { стиль, общий для обеих загрузок}

#div1.loading{стиль, используемый только при загрузке в div1}

#div2.loading{стиль, используемый только при загрузке в div2}

Помимо проверки и пуристов, это совершенно функционально. Но я определенно был бы раздражен, если бы я использовал этот идентификатор #Loading и обнаружил, что эффект jQuery или эффект CSS применим к более чем 1 элементу. Дайте мне, если IE6 или 7 или Firefox 1.x или 2.x этот код разрушает.

Это плохая практика использования я на элементе. Потому что я бы дал что-то для понимания уникально с их идентификацией имени. И вторая вещь, которую мы используем его в CSS, но в JavaScript эта плохая практика. Так хороший пример для этого класса и студента.

Так что не делай этого.

Я не согласен с людьми, говоря, что всегда использовать «уникальный», что означает другой идентификатор каждый раз, когда вы эти маркируете один. Иногда его приемлемый, такой как мой случай, когда я делаю калькулятор.

JavaScript выполняет математику и выводит результат в DIV с id = "total". Однако мне нужно то же самое, что и в 2 разных местах. В этом случае, почему мне не использовать два разных дивирования с одним и тем же идентификатором? Мне нужен одинаковый номер в обоих коробках. С jQuery я выполняю и вывожу математику один раз, и она заполняет оба Div одновременно, что я хочу.

Пока вы понимаете риски, где, если вы вытащили информацию из этих двух Div с одним и тем же идентификатором, я говорю, не стесняйтесь. Пока вы не путаете себя и нуждаетесь в 2 разных результатах в одном идентификаторе Div.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top