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

Determine which element is first and do this

本文关键字:执行 操作 第一个 元素      更新时间:2023-09-26

我需要将焦点设置在".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();

这将找到所有可见的输入元素、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/

像这样吗?

$('.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) 选择第一个元素... ;)

尝试:

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

js小提琴示例

我不确定您要实现的目标,因为没有任何元素与类焦点。 只需将类焦点添加到您的输入元素,然后我们

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