Javascript 如何确定手风琴瓷砖菜单的标签顺序?
我正在创建一个瓷砖/手风琴实用程序。 单击互动程序后,我将通过在最近的第三个li元素下面添加div内容来显示与该互动程序相关的内容,并将手动设置该div内容部分的焦点 在JS和CSS的帮助下,我现在能够实现此功能: 然而,可访问性/选项卡顺序功能是错误的。如果我单击Tile 1并为其显示内容(div将附加在第三个li元素的下面),在使用键盘进行tabbing时,链接后,焦点应该转到Tile 2,但它转到Tile 4(因为DOM中元素的顺序是这样的,并且我已经以不同的显示顺序相对定位了元素) 如果我删除元素的相对定位,外观就会变得一团糟 我认为可以解决的可能解决方案:Javascript 如何确定手风琴瓷砖菜单的标签顺序?,javascript,jquery,html,css,accessibility,Javascript,Jquery,Html,Css,Accessibility,我正在创建一个瓷砖/手风琴实用程序。 单击互动程序后,我将通过在最近的第三个li元素下面添加div内容来显示与该互动程序相关的内容,并将手动设置该div内容部分的焦点 在JS和CSS的帮助下,我现在能够实现此功能: 然而,可访问性/选项卡顺序功能是错误的。如果我单击Tile 1并为其显示内容(div将附加在第三个li元素的下面),在使用键盘进行tabbing时,链接后,焦点应该转到Tile 2,但它转到Tile 4(因为DOM中元素的顺序是这样的,并且我已经以不同的显示顺序相对定位了元素) 如
- 第一个选项卡-关注div内的链接
- 第二个选项卡-焦点应移到平铺2
- 第三个选项卡-焦点应移到平铺3
- 第四个选项卡-焦点应移到平铺4
- 第一个选项卡-关注div内的链接
- 第二个选项卡-焦点应移动到平铺
- 第三个选项卡-焦点应移动到平铺
- 第四个选项卡-焦点应移动到平铺
$(文档).ready(函数(){
$(“#tiles>li”)。单击(函数(){
var idVal=$(this.find(“a”).attr(“rel”);
dynamicContainerClass=“”;
var indexVal=parseInt($(this.attr(“rel”));
$(“.dynamicContainer”).remove();
var id=parseInt($(this.attr(“rel”));
var$positionObj=$(“#contentDiv”).html();
//$(“如果可能,尝试使用tabindex
避免。如果页面上只有平铺,那么混用tabindex
可能没问题。但是一旦设置了一个对象的tabindex
,就必须为所有对象设置它。也就是说,你必须完全控制选项卡这一页上的每一件事都会变得一团糟
标记的DOM顺序通常是最好的顺序,因此如果必须更改标记顺序,通常最好更改DOM
但是,请记住,视力低下的用户,尤其是那些使用放大镜(如ZoomText)的用户,可能会对您的选项卡顺序感到困惑,因为它不一致。放大镜会滚动页面以将焦点保持在视图内
如果磁贴1打开,则顺序为:
地砖1
链接
地砖2
瓷砖3
如果磁贴2打开,则顺序为:
地砖1
地砖2
链接
瓷砖3
如果磁贴3打开,则顺序为:
地砖1
地砖2
瓷砖3
链接
屏幕放大镜将以“看似”随机的方式不断地前后移动。用户在跳到打开的部分之前不知道焦点是否会在瓷砖上移动
这并没有回答您最初的问题(虽然tabindex
算是一个答案),但希望能从可访问性的角度提供一些思考的素材。能够通过使用此解决方案实现预期的选项卡顺序。使用绝对、顶部和左侧属性重新定位互动程序。它起到了作用
$(文档).ready(函数(){
$(“#tiles>li”)。单击(函数(){
var idVal=$(this.find(“a”).attr(“rel”);
dynamicContainerClass=“”;
var indexVal=parseInt($(this.attr(“rel”));
$(“.dynamicContainer”).remove();
var id=parseInt($(this.attr(“rel”));
var$positionObj=$(“#contentDiv”).html();
var listItems=$(“#li”);
listItems.each(函数(idx,li){
$(li).css({'position':'','top':'','left':''});
});
//$('Hi,请不要通过发布一个链接作为“代码”来规避您在大红条幅中看到的要求。请在问题本身中包含您的代码(请参阅了解更多信息)。代码现在已包含。