dojo.query "," (или) для объединения нескольких выборов не работает в IE 7 - PullRequest
0 голосов
/ 04 марта 2011

Я использую

dojo.query('input,select',myDiv)[0].focus();

для фокусировки первого элемента ввода, найденного в контейнере div.

Это будет работать в Firefox, но не в IE 7.

IE 7 учитывает только первый запрос:

dojo.query('input,select')[0] will select the first input element, 
  even if a select element is first.

dojo.query('select,input')[0] will select the first select element, 
  even if an input element is first.

Кто-нибудь знает обходной путь для этого?

1 Ответ

2 голосов
/ 05 марта 2011

Если я правильно помню, dojo.query не обязательно гарантирует "хронологический" порядок в возвращаемом NodeList, особенно для сложных запросов. Обычно это происходит из-за того, что для некоторых браузеров / в некоторых сценариях приходится объединять несколько разнородных результирующих наборов, и попытка переупорядочить это в зависимости от того, где находится каждый элемент в документе, вероятно, была бы гораздо большим ударом по производительности. чем это стоит.

Тем не менее, я не уверен, что предложить в качестве альтернативы. Было бы достаточно легко найти первое из одного ИЛИ по отдельности, но не при поиске обоих в одном запросе.

Если ваша форма имеет некоторую непротиворечивую разметку вокруг ваших входных данных (например, каждое поле находится внутри, скажем, div с class="field"), я полагаю, вы могли бы сделать что-то вроде этого:

dojo.query('.field:first-child select, .field:first-child input')
...