所以这是一个常见的问题我猜我从其他帖子得到了相同的答案但是当我尝试应用答案时,它不适用于我的情况。所以我想使用jquery从另一个页面定位一个特定的div。 这是我的代码:
$('a[href^="#"]').on('click', function (e) {
e.preventDefault();
var target = this.hash;
var t = $(this.hash).offset().top;
$('html, body').stop().animate({
scrollTop: t,
}, 1000, function () {
window.location.hash = target;
});
});
例如,我有一个菜单:
<ul class="nav navbar-nav">
<li class="active dropdown">
<a class="border menu_link_3" href="jewellery">Jewellery </a>
<ul class="dropdown-menu">
<li><a href="#kalis-pearls">Kalis Pearls</a></li>
<li><a href="#mariana">Mariana</a></li>
</ul>
</li>
<li class="dropdown">
<a class="border menu_link_4" href="manufacturing">Manufacturing</a>
<ul class="dropdown-menu">
<li><a href="#handmade-jewellery">Handmade</a></li>
<li><a href="#computer-graphic-jewellery-design">Computer Graphic</a></li>
<li><a href="#gem-sourcing">Gem Sourcing</a></li>
</ul>
</li>
</ul>
因此Jewellery
是我的主动菜单,当我尝试转到Manufacturing
菜单子页面时,它会给我一个错误:
Uncaught TypeError: Cannot read property 'top' of null
我在这里缺少什么?
答案 0 :(得分:0)
听起来您正在尝试滚动到当前页面上不存在的其他页面上的元素。
您需要读取新页面页面加载的哈希值,然后滚动...如果该元素存在
在您当前的代码中...检查目标是否在页面中,然后阻止默认值,否则让浏览器关注网址