javascript - 如何使用 javascript 或 jquery 将焦点设置在第一个 LI 上?

标签 javascript jquery html

如何使用 JavaScriptjQuery 将焦点设置在第一个 li 上? 我是初学者。

代码:

$('ul li').each(function() {
  if ($(this).find('a').length > 0) {
    $(this).find('a').css('color', 'red');
    $(this).find('a').focus()
    return false;
  }
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul id="dfruits" class="sinline">
  <li><p class="StockBez">ROBO</p></li>
  <li><p class="StockBez">SQ</p></li>
  <li><p class="StockBez">NVDA</p></li>
</ul>

最佳答案

除非设置了 tabindex,否则不能将 focus 放在 li 元素上,因为默认情况下它不是可聚焦的元素。如果你设置了它的tabindex,那么你可以使用:

/* Put focus on the first li element. */
$("#dfruits > li").first().focus();

片段:

/* ----- JavaScript ----- */
$("#dfruits > li").first().focus();
<!----- HTML ----->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="dfruits" class="sinline">
  <li tabindex="-1">
    <p class="StockBez">ROBO</p>
  </li>
  <li tabindex="-1">
    <p class="StockBez">SQ</p>
  </li>
  <li tabindex="-1">
    <p class="StockBez">NVDA</p>
  </li>
</ul>

<小时/>

注释:

  1. 在上面的 HTML 代码中,我将每个 li 元素的 tabindex 设置为 -1。这意味着 li 元素只能通过 JavaScript 以编程方式获得焦点,而不能通过点击 tab 键。

  2. 如果您的 HTML 有任何实际的 anchor 元素,正如您提供的 JavaScript 代码所暗示的那样,您可以使用 $("#dfruits a ").first().focus(); 将焦点设置为此类元素,无需使用 tabindex,前提是它们设置了 href 属性。

  3. 如果您注重代码的速度,最好使用 $("#dfruits").find("li") 而不是 $("#dfruits > li"),因为 Sizzle 引擎尝试从右到左匹配选择器(@Mark Schultheiss ' 注释)。

关于javascript - 如何使用 javascript 或 jquery 将焦点设置在第一个 LI 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47954110/

相关文章:

javascript - 将一个函数绑定(bind)到多个套接字

php - 服务器没有获取 css 文件

html - 页面倾斜分隔线

javascript - Knex.js 中的查询包装

javascript - 使用对象包装器扩展 JavaScript 的 DOM?

c# - 如何在 HTML 表格上复制 "freeze pane"功能?

javascript - asp.net Mvc 2 中的 jquery 模态对话框

Jquery 复选框

html - html 友好的电子邮件客户端通常支持 CSS 样式表吗?

javascript - AngularJS:ng-repeat没有相似的键