首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态创建的li不会单击.focus()

动态创建的li不会单击.focus()
EN

Stack Overflow用户
提问于 2022-06-25 03:05:47
回答 1查看 22关注 0票数 0
代码语言:javascript
复制
$('#spell-check').on('click', 'li', function() { 
  $(this).focus()
});

<ul id="spell-check">
  <li tabindex="1">suggestion 2</li>
  <li tabindex="2">suggestion 1</li>
</ul>

<li>是动态添加到这个列表中的,但是<ul id="spell-check">是在加载中包含的。问题是,在点击它之后,<li>就不会聚焦。请问我做错了什么?

,这是一个编辑,我刚刚发现问题是我没有为焦点应用任何css,比如:

代码语言:javascript
复制
#spell-check li:focus {
  border: 1px solid blue;
}

但我不明白的是,为什么当李是专注的时候,铬浏览器的样式不适用于这个场合?因为当我基于击键事件聚焦相同的元素时,它确实应用了铬蓝色边框而没有添加:焦点css?

因此,当我这样做时,(标准Chrome)聚焦的蓝色边框被应用于:

代码语言:javascript
复制
$('input').on('keyup', function(e) {
   var $spellSuggestList = $("#spell-check");
   if (e.keyCode == 40) {
     $("li:first-child", $spellSuggestList).focus();
     return
   }
})

不管怎么说,我不知道这是否合适,但总有一天它会帮到别人的。

EN

回答 1

Stack Overflow用户

发布于 2022-06-25 03:25:02

您需要向动态创建的tabindex添加一个<li>属性。工作实例:

代码语言:javascript
复制
$('#spell-check').on('click', 'li', function() { 
  $(this).focus()
});
$('#spell-check').append('<li tabindex="-1">foobar</li>')
代码语言:javascript
复制
:focus {
    border: 1px solid red;
}
代码语言:javascript
复制
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>

<ul id="spell-check">
  <li tabindex="1">suggestion 2</li>
  <li tabindex="2">suggestion 1</li>
</ul>

参考资料:Why div:focus does not works without tabindex

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72750986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档