Мне нужно сосредоточиться на первом элементе формы или классе ".фокус"; в зависимости от того, что видно или первым.
Кажется, это не сортирует каждый, чтобы определить, что на первом месте?
http://jsfiddle.net/infatti/tdvHJ/1/
$('.focus:visible:first, body:not(:has(.focus:visible)) input:visible:first, body:not(:has(.focus:visible)) textarea:visible:first').focus();
Это обнаружит все видимые элементы ввода, элементы textarea и элементы фокуса:
$('input:visible, .focus:visible, textarea:visible')
Он также будет упорядочен по заказу в DOM, поэтому первый из этих элементов в документе будет первым в объекте jQuery. Чтобы получить доступ к первому:
$('input:visible, .focus:visible, textarea:visible').eq(0);
и сосредоточиться на нем:
$('input:visible, .focus:visible, textarea:visible').eq(0).focus();
Обратите внимание, что, как я только что узнал, jQuery считает элементы "видимыми", если они занимают место в документе. Таким образом, элементы с visibility:hidden
или opacity:0
все равно будут считаться видимыми:
im не уверен, чего вы пытаетесь достичь, поскольку нет элементов с фокусом класса. Просто добавьте фокус класса к вашему элементу ввода, а затем нам
$('.focus').focus();
Как это?
$('.focus:visible:first, body:not(:has(.focus:visible)) input:visible:first, body:not(:has(.focus:visible)) textarea:visible:first').eq(0).focus();
Сценарий: http://jsfiddle.net/infatti/tdvHJ/1/
Eq (0) выбирает первый элемент...;)
$(#container_with_inputs).find(...)
.