javascript - 根据哈希中的内容打开 html 部分
问题描述
正如标题所说,我正在尝试打开一个与 url 哈希匹配的部分。我的代码有效,但它被窃听了,我不知道该怎么办了。
在这里,我有以下导航栏:
<li class="navigation-li">
<a href="#" name="about" class="navigation-a section-to" data-page-section="#about">
<span class="text-line-wrp">
<span class="text">Sobre Nós</span>
<span class="line"></span>
</span>
<span class="icon iconwrp square-40"><i class="pe-7s-home"></i></span>
</a>
</li>
<li class="navigation-li">
<a href="#" name="services" class="navigation-a section-to" data-page-section="#services">
<span class="text-line-wrp">
<span class="text">Serviços</span>
<span class="line"></span>
</span>
<span class="icon iconwrp square-40"><i class="pe-7s-config"></i></span>
</a>
</li>
每个“li”都会打开一个部分,并且该代码已经开发并可以运行,但是,我无法使用哈希打开它,它可以工作,但是即使我只调用一个,它也会打开其他部分。
根据哈希打开部分的代码:
<script>
$(document).ready(function() {
var hash = window.location.hash.substr(1)
setTimeout(function() {
if (hash) {
e = document.createEvent('MouseEvents');
e.initEvent("click", true, true);
$('a[data-page-section="#' + hash + '"]')[0].dispatchEvent(e) //open section accordingly to shash
} else {
console.log("no hash")
}
}, 1000);
});
</script>
此外,如果我来自另一个页面,所有部分都将打开,如果我关闭并重新打开,所有部分将打开并重新打开。
我希望你能理解这一点,并提前感谢你。
解决方案
您可以尝试使用Element.scrollIntoView()
而不是尝试模拟点击。
$(document).ready(function() {
var hash = window.location.hash;
$('a[data-page-section="' + hash + '"]').get(0).scrollIntoView(true)
});
推荐阅读
- javascript - 同时计算多个集合中的文档
- css - 具有行和列全高的引导容器
- powershell - 如何从PowerShell中的GET-TIMEZONE函数响应中读取时区ID
- firebase - 我应该使用 Cloud Functions 制作 RESTful API 还是在应用程序中调用 Firebase 和 Firestore?
- python - Python中使用OLS的线性多元回归不起作用
- java - 构建 Geonetwork 时 Maven 构建失败
- java - Netbeans 12.0 Java 提示和亮点不起作用
- linux - 更改 struct spi_device 后“不同意符号的版本”
- c++ - 预期不是标准库的一部分
- android - 如何为 BottomNavigationView + Navigation 组件添加条件?