如果不改变tabindex堆栈,你无法绕过这个问题。但是,你可以很容易地编写一个小插件,将焦点转移到其他地方。虽然有些混乱,但我强烈建议不要这样做。
然而,你可以在上面和下面设置一个tabindex堆栈。比如说,在DOM中所有这些项目上面的对象都可以有tabindex 10,下面的对象都可以有tabindex 30。
对于你列出的项目,你可以强制将tabindex设置在20到29之间。像这样:
Over:
<div></div>
<div></div>
<div></div>
<div></div>
您的范围:
<a tabindex="20">Link1</a>
<a tabindex="20">Link2</a>
<a tabindex="20">Link3</a>
<a tabindex="20">Link4</a>
<a tabindex="20">Link5</a>
下面:
<domobject tabindex="30"/>
<domobject tabindex="30"/>
<domobject tabindex="30"/>
<domobject tabindex="30"/>
这将强制制表符按正确顺序通过DOM。但是,如果您沿途包括未标记为制表符的对象,则它们将获得与第一个块相同的制表符索引 - 使一切变得奇怪和奇特。
如果您想切换范围的制表符索引,可以根据需要进行更改,在您拥有的“缓冲区范围”内(例如20-29):
<a tabindex="25">Link1</a>
<a tabindex="24">Link2</a>
<a tabindex="23">Link3</a>
<a tabindex="22">Link4</a>
<a tabindex="21">Link5</a>
这个代码太乱了。
使用jQuery选项也有点乱,但它更加简洁(而且易于维护)。