我有一些向导选项卡,每个选项卡都包含表单元素。我想专注于每个选项卡的第一个表单元素。我如何只关注可见元素。EG:当我导航到下一个选项卡表单时,我不希望我的第一个隐藏选项卡被聚焦。
http://jsfiddle.net/infatti/kdWT8/
这似乎不起作用?
$('.focus:first:not(:hidden)').focus();
我有一些向导选项卡,每个选项卡都包含表单元素。我想专注于每个选项卡的第一个表单元素。我如何只关注可见元素。EG:当我导航到下一个选项卡表单时,我不希望我的第一个隐藏选项卡被聚焦。
http://jsfiddle.net/infatti/kdWT8/
这似乎不起作用?
$('.focus:first:not(:hidden)').focus();
你反过来做:
$('.focus:not(:hidden):first').focus();
现在你得到了 class 的第一个元素.focus
,它当然是隐藏的,然后你只过滤可见元素,这让你什么都没有?
您需要获取可见元素,然后获取第一个。
Here's another way of doing it:
$(document).find('.focus').filter(':visible').eq(0).focus();
With the Fiddle
I think chaining is more readable than sizzle selectors; here it reads "find all the elements with class focus, filter only the ones that are visible, take the first one and give it focus"