确定哪个元素是第一个并执行此操作

时间:2013-09-24 14:55:24

标签: javascript jquery

我需要将焦点放在第一个表单元素或类“.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();

4 个答案:

答案 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:hiddenopacity:0的元素仍会被视为可见:

http://api.jquery.com/visible-selector/

答案 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)

尝试:

$('.focus:visible:first').filter(":input").focus();

<强> jsFiddle example

答案 3 :(得分:0)

我不确定你想要实现什么,因为没有任何具有类焦点的元素。只需将类焦点添加到输入元素然后我们

$('.focus').focus();