У меня есть селектор jQuery, который запрашивает элементы по имени тега и классу. В запросе, который я ожидаю вернуть три элемента, Safari (v3.1.1 для Windows) возвращает дополнительный элемент.
Причина, по-видимому, заключается в числовом идентификаторе *. Изменение идентификатора на нечисловое устраняет дублирующийся элемент. Как ни странно, изменение идентификатора первого элемента на другие числа оказывает, казалось бы, случайное влияние на счетчик конечных результатов. Идентификатор 4 увеличивает результат до пяти. 0, 9 и 1234 все возвращают четыре элемента.
<div class="mydiv" id="1"></div>
<div class="mydiv" id="2"></div>
<div class="mydiv" id="3"></div>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.1.min.js"></script>
<script type="text/javascript">
$(function()
{
var div = $('div.mydiv');
alert( div.length ); // Safari 3.1.1 returns 4
alert( $.unique( div ).length ); // Safari 3.1.1 returns 3
} );
</script>
Firefox 3 и IE 7 отображают 3 в обоих окнах предупреждений.
*
Я знаю, что числовые идентификаторы не являются действительными идентификаторами HTML . Плагин jqGrid, который я использую, по умолчанию использует числа для идентификаторов строк. Я посмотрю, как изменить это поведение, но пока мне интересно, почему это влияет на приведенный выше запрос.
EDIT
Прошло много времени с тех пор, как я посмотрел свой код поиска данных для jqGrid. Оказывается, я могу установить идентификаторы строк на сервере так, как мне хочется.