Как выбрать все элементы с определенным идентификатором в jQuery? - PullRequest
67 голосов
/ 24 мая 2009

Я пытаюсь выбрать все <div> s с одинаковым идентификатором в jQuery. Как мне это сделать?

Я попробовал это, и это не сработало

jQuery('#xx').each(function(ind,obj){
      //do stuff;
});

Ответы [ 7 ]

380 голосов
/ 19 июля 2011

Хотя здесь есть и другие правильные ответы (такие как использование классов), с академической точки зрения, конечно, возможно иметь несколько div с одним и тем же идентификатором, и их можно выбрать с помощью jQuery.

Когда вы используете

jQuery("#elemid") 

выбирает только первый элемент с заданным идентификатором.

Однако, когда вы выбираете по атрибуту (например, id в вашем случае), он возвращает все соответствующие элементы, например, так:

jQuery("[id=elemid]") 

Это, конечно, работает для выбора любого атрибута, и вы можете еще более уточнить свой выбор, указав соответствующий тег (например, div в вашем случае)

jQuery("div[id=elemid]") 
39 голосов
/ 24 мая 2009

Я бы использовал разные идентификаторы, но присваивал каждому DIV один и тот же класс.

<div id="c-1" class="countdown"></div>
<div id="c-2" class="countdown"></div>

Это также имеет дополнительное преимущество, заключающееся в возможности восстанавливать идентификаторы, основываясь на возврате jQuery («. Countdown»).


Хорошо, как насчет добавления нескольких классов к каждому таймеру обратного отсчета. IE:

<div class="countdown c-1"></div>
<div class="countdown c-2"></div>
<div class="countdown c-1"></div>

Таким образом, вы получаете лучшее из обоих миров. Это даже позволяет повторить «IDS»

36 голосов
/ 24 мая 2009

Ваш документ не должен содержать два элемента div с одинаковым идентификатором. Это недопустимый HTML , и в результате базовый API DOM его не поддерживает.

Из стандарта HTML :

id = name [CS] Этот атрибут присваивает имя элемента. Это имя должно быть уникальным в документе.

Вы можете назначить разные идентификаторы каждому div и выбрать их оба, используя $('#id1, #id2). Или назначьте один и тот же класс обоим элементам (например, .cls) и используйте $('.cls'), чтобы выбрать их оба.

4 голосов
/ 15 апреля 2013

$("div[id^=" + controlid + "]") вернет все элементы управления с одинаковыми именами, но вам нужно убедиться, что текст не должен присутствовать ни в одном из элементов управления

2 голосов
/ 08 января 2013

Попробуйте это для выбора div по первому идентификатору

$('div[id^="c-"]')
2 голосов
/ 24 мая 2009

Можете ли вы назначить уникальный класс CSS для каждого отдельного таймера? Таким образом, вы можете использовать селектор для класса CSS, который будет отлично работать с несколькими элементами div.

1 голос
/ 26 августа 2010

Вы также можете попробовать обернуть два div в два div с уникальными идентификаторами. Затем выберите деление на $("#div1","#wraper1") и $("#div1","#wraper2")

Вот, пожалуйста:

<div id="wraper1">
<div id="div1">
</div>
<div id="wraper2">
<div id="div1">
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...