Наличие двух элементов с одинаковым идентификатором недопустимо html в соответствии со спецификацией W3C.
Когда ваш селектор CSS имеет только селектор ID (и не используется в определенном контексте), jQuery использует native document.getElementById
, который возвращает только первый элемент с этим идентификатором.
Однако в двух других случаях jQuery полагается на механизм выбора Sizzle (или querySelectorAll
, если он доступен), что, по-видимому, выбирает оба элемента. Результаты могут различаться в зависимости от браузера.
Однако у вас никогда не должно быть двух элементов на одной странице с одинаковым идентификатором. Если вам это нужно для вашего CSS, используйте вместо этого класс.
Если вы абсолютно должны выбрать дублирующийся идентификатор, используйте селектор атрибутов:
$('[id="a"]');
Взгляните на скрипке: http://jsfiddle.net/P2j3f/2/
Примечание: если это возможно, вы должны квалифицировать этот селектор с помощью селектора тегов, например:
$('span[id="a"]');
Если у вас есть статические ячейки (то есть небольшой фиксированный набор статических ячеек, а не динамические ячейки с прототипами ячеек, где вы контролируете, сколько типов ячеек будет динамически генерироваться), вам не следует реализовывать какие-либо UITableViewDataSource
методы. Просто создайте IBOutlet
ссылки для различных элементов управления, которые есть в ваших статических ячейках, и обновите их, как если бы вы вообще не использовали UITableView
.
Кроме того, если бы вы использовали динамические ячейки, вы бы никогда не дали двум разным прототипам ячеек один и тот же идентификатор повторного использования. Цель идентификатора повторного использования состоит в том, чтобы сообщить ему, какой прототип ячейки использовать, и поэтому не имеет смысла давать нескольким прототипам ячеек один и тот же идентификатор.