Нормально ли иметь два элемента с одинаковым идентификатором в двух элементах 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.