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

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

<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")... он становится уникальным элементом. не так ли?

Ответ 1

Измените свой идентификатор на класс. Не рекомендуется дублировать идентификатор.

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

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

Ответ 2

идентификатор должен (должен) быть уникальным!!

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

Ответ 3

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

document.getElementById("loading")

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

Ответ 4

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

.loading
{
styles here
}

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

Ответ 5

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

Ответ 6

Unique:

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

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

Ответ 7

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

id = name [CS]

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

Ответ 8

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

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

Но он (по-видимому) работает, поэтому...

Ответ 9

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

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

# div1.loading и # div2.loading

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

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

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

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

Ответ 10

валидация и пуризм в стороне, это совершенно функционально. Но я определенно был бы раздражен, если бы использовал этот идентификатор #loading и обнаружил, что эффект jquery или эффект css применяется к более чем одному элементу. Скажите мне, если IE6 или 7 или Firefox 1.x или 2.x разрушают этот код.

Ответ 11

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

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

Ответ 12

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

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

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