Селектор jQuery возвращает дубликаты элементов в Safari - PullRequest
3 голосов
/ 02 марта 2010

У меня есть селектор 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. Оказывается, я могу установить идентификаторы строк на сервере так, как мне хочется.

1 Ответ

6 голосов
/ 02 марта 2010

Краткий ответ: При использовании недопустимого HTML вы всегда будете иметь непредсказуемое поведение. (даже если то, что вы делаете, работает 95% времени)

Проблема, как вы и сказали, в том, что числовые идентификаторы недействительны, поэтому при подсчете и т. Д. Браузер может сделать это предположение ... если они недействительны и это вызывает ошибку, ну ... это не их ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...