moyna coder Ответов: 2

Как ссылаться на элемент, имеющий тот же идентификатор, что и у другого идентификатора в другом div?


Я не могу получить элемент, имеющий тот же идентификатор, что и у другого идентификатора в другом div . кто-нибудь может мне помочь ?

Что я уже пробовал:








если я хочу назвать id2. Я попробовал как $('#id2 #name'). но я не мог достать.

2 Ответов

Рейтинг:
14

Kornfeld Eliyahu Peter

В HTML запрещено, чтобы более одного элемента имели один и тот же идентификатор. В других мирах идентификатор должен быть уникальным по всей странице. Поэтому, если браузеры столкнутся с неуникальным идентификатором, они заменят его случайным уникальным идентификатором. Они делают это в основном только для более позднего элемента, но некоторые делают это для всех.
Это означает, что при поиске идентификатора вы получите максимум один результат.
Непонятно, почему вы даете один и тот же идентификатор для более чем одного элемента, но если вы ищете группировку, используйте атрибут name - это может быть не уникальным...


moyna coder

Итак, что же мне делать ?.. только по именам атрибутов ?

Kornfeld Eliyahu Peter

Я не знаю, какова ваша цель и почему в первом olace вы создали дубликат id, поэтому я не могу сказать, что делать...

moyna coder

для некоторого упрощения я думал использовать этот способ и просто хотел знать, почему это невозможно.. спасибо :)

ZurdoDev

Это совсем не так. Браузеры по-прежнему будут работать и отображать оба элемента управления, и они вообще не изменят идентификатор.

Kornfeld Eliyahu Peter

Я не говорил, что браузер не будет работать. Ни один из этих браузеров не изменит ваш HTML-код... Однако DOM будет отличаться внутренне (каждый элемент будет иметь свой идентификатор), и для этого выбор по идентификатору даст вам максимум один результат...

ZurdoDev

Попробуйте решение 2. Это сработает. Конечно, это не очень хорошая идея, но она сработает.

Рейтинг:
0

ZurdoDev

Цитата:
если я хочу назвать id2. Я попробовал как $('#id2 #name'). но я не мог достать.
Ты уже близко. Вы упускаете запятую.

Это сработает:
$("#id2", "#name");  // find control with id=id2 inside of element with id = name


Но Питер прав, вам гораздо лучше исправить то, что вызывает дубликаты идентификаторов.


Kornfeld Eliyahu Peter

Принимая это:
&ЛТ;див ИД="id1 в"&ГТ;&ЛТ;Спан ИД="наименование"и GT;1&ЛТ;/службы&ГТ;&ЛТ;/дел&ГТ;
&ЛТ;див ИД="ID2, которое"&ГТ;&ЛТ;Спан ИД="наименование"и GT;2&ЛТ;/службы&ГТ;&ЛТ;/дел&ГТ;

Ваш jQuery ничего не вернет, в то время как getElementById вернет первое... Нет никакого способа, чтобы добраться до второго пролета, используя идентификатор...

ZurdoDev

Конечно, будет. предупреждение($("#имя", "#ID2, которое было").длина) будет 1.

Kornfeld Eliyahu Peter

Существует большая разница между $("#id2", "#name") и $("#name", "#id2")!!!
И это один из тревожных недостатков JQuery, который был создан для обработки множества дочерних элементов одной и той же характеристики с разными родительскими, но может быть использован для злоупотребления HTML... Причина в том, что в этот момент jQuery фактически пересекает дерево DOM вместо использования функций JavaScript...

ZurdoDev

Конечно.