我需要将焦点放在第一个表单元素或类“.focus”上;无论哪个是可见的还是第一个。
这似乎并没有通过各自来确定哪个是第一个?
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();
答案 0 :(得分:2)
这将找到所有可见的输入元素,textarea元素和.focus元素:
$('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
的元素仍会被视为可见:
答案 1 :(得分:0)
喜欢这个吗?
$('.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)选择第一个元素......;)
答案 2 :(得分:0)
答案 3 :(得分:0)
我不确定你想要实现什么,因为没有任何具有类焦点的元素。只需将类焦点添加到输入元素然后我们
$('.focus').focus();