javascript - jQuery函数使用键盘滚动页面到选定的标题
问题描述
我有这段代码可以创建一个h2
包含可点击链接的页面中所有元素的列表,但它不适用于键盘。
我希望能够选择this
代码中引用的内容并通过按键盘上的 enter 向下滚动到它。
有谁知道我该怎么做?干杯
if (jQuery(sections).length > 1) {
jQuery(sections).each(function() {
sectionList += '<li class="scrollControl"><span class="sectionText" tabindex="0">' + jQuery(this).html() + "</span></li>";
});
解决方案
你是这个意思
在这里,我还允许在 LI 上使用制表符和输入
const $sections = $("h1");
$("#nav").html(
$sections.map(function() {
return `<li class="scrollControl"><span class="sectionText" tabindex="0">${$(this).html()}</span></li>`
}).get().join("")
);
$("#nav").on("click", "li", function() {
$sections.eq($(this).index())[0].scrollIntoView()
})
$(document).on('keydown', function(e) {
if (e.originalEvent.code === "Enter") {
const tgt = e.target.closest("li")
if (tgt && tgt.classList.contains("scrollControl" )) {
$sections.eq($(tgt).index())[0].scrollIntoView()
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="nav"></ul>
<h1>Section 1</h1>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<p>Text</p>
<h1>Section 2</h1>
推荐阅读
- android - 如何从 kotlin 对象中清除数据?
- javascript - 迁移失败并出现错误:table.integer(...).references(...).on(...).OnDelete is not a function Knex.js postgres
- java - 使用 Java Stream - 独立处理两半流
- elasticsearch - ElasticSearch - 查询中的所有单词都必须匹配
- python-3.x - “地图”对象不可下标
- linux - 如何使用 Pyshark 捕获具有特定通道的 wifi 数据包?
- javascript - 拖动时的 Interact.js 克隆(在 vue 组件中)
- python - 重新编号序列以消除间隙,但保持相同的数字
- javascript - 如何将javascript变量传递给innerhtml内部的flask url_for?
- python - Django Managemengt 命令记录加入消息