javascript - 如何在 Javascript 中将焦点设置在列表元素上?

标签 javascript html accessibility

我已经编写了代码来显示页面上的一些元素列表。另外,我还编写了 javascript 代码来对元素进行切片。因此,我的页面最初显示 5 个元素,每次用户单击“显示更多”链接时,都会显示另外 5 个元素。我的问题是,当我单击 showmore 时,我希望将焦点集中在列表的第 6 个元素上,同样,第 11 个、第 16 个元素等,目前,我没有收到列表中第 6 个元素的焦点。

这是一个片段:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $('ul li:gt(6)').hide();
  $('#showMore').click(function() {
    $('#payment li:hidden').slice(0, 5).css("display", "list-item");
    $('#payment li:visible:last').focus();

    // To illustrate that the last LI gets selected properly
    $('#payment li:visible:last').css({"background" : "red"}); 


  }); 
});
</script>

<title>Page Title</title>
</head>
<body>
<ul id="payment">
  <li>xyz</li>
  <li>xyz</li>
  <li>xyz</li>
  <li>xyz</li>
  <li>xyz</li>
  <li>xyz</li>
  <li>xyz</li>
  <li>xyz</li>
</ul>

 <li id="showMore" >
    <a href="javascript:;" >Show More</a>
  </li>  
</body>
</html>

谢谢

最佳答案

也许我说的是显而易见的事情,但是 <li>元素本身不可聚焦。如果您想以编程方式将焦点移动到 <li> ,它必须有tabindex='-1' .

<li tabindex='-1'>xyz</li>

现在 focus() 方法应该可以工作了。

关于javascript - 如何在 Javascript 中将焦点设置在列表元素上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49318488/

相关文章:

html - 背景图像未出现在网站上

user-interface - 无障碍对比度与企业形象指南

javascript - 从 JSON 文件填充表内容

javascript - mootools 和 jQuery 冲突

html - 如何使用 css 在圆形 div 中垂直居中我的文本

ios - 如何更改我的应用程序的 VoiceOver 发音?

reactjs - 用于 typescript 的 eslint-plugin-jsx-a11y

javascript - 淡入/淡出在 Vue 的路由器转换中不起作用

javascript - 如何延迟调用 JS 函数 - 动画 gif 在 IE 中不起作用

html - 具有 CSS 三 Angular 形和元素之间边距的响应式面包屑