我试图找到一个类是否存在,如果不是只找到第一个表单元素。我怎么写:输入?这似乎不起作用。
$('.focus:not(:hidden):first, :input:not(:hidden):first').focus();
答案 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();