找到任何表单元素

时间:2013-09-23 21:47:31

标签: javascript jquery

我试图找到一个类是否存在,如果不是只找到第一个表单元素。我怎么写:输入?这似乎不起作用。

$('.focus:not(:hidden):first, :input:not(:hidden):first').focus();

3 个答案:

答案 0 :(得分:2)

以逗号分隔的选择器不会以您似乎指示的方式分层。您的选择器将产生第一个可见的.focus 第一个可见的输入元素。你需要在两个选择器中解决这个问题:

var focusElement = $('.focus:visible:first');

if(focusElement.length == 0)
    focusElement = $(':input:visible:first');

focusElement.focus();

或者我想你可以写

$('.focus:visible:first, body:not(:has(.focus:visible)) :input:visible:first').focus();

答案 1 :(得分:0)

您的代码实际上对我有用。看看this jsfiddle。尝试删除我的class='focus',然后再回到选择第一个输入字段。

答案 2 :(得分:0)

我会选择易于理解的模型:

var finder = $('.focus:not(:hidden):first');
finder = finder.length ? finder: $(':input:not(:hidden):first');
finder.focus();

同样的结果,但是如果给予左右嘶嘶声的权利可能会更好:性能

var finder = $('.focus').not(':hidden').eq(0);
finder = finder.length ? finder: $(':input').not(':hidden').eq(0);
finder.focus();