Javascript jQuery滚动到另一页中的某个部分
我正在尝试使用jQuery库创建一个新脚本,以滚动到页面上的特定id,但我有两个问题:Javascript jQuery滚动到另一页中的某个部分,javascript,jquery,jquery-animate,Javascript,Jquery,Jquery Animate,我正在尝试使用jQuery库创建一个新脚本,以滚动到页面上的特定id,但我有两个问题: 我无法删除地址栏中的href内容。例如,我的链接滚动到id为锚定链接节的节块,在我的链接中我有href=“index.php#锚定链接节”。然而,在我的地址栏中,我看到了www.site.com/index.php#锚定链接部分…。我怎样才能把它脱下来 如果我已经在页面上,我的id是section scroll,我的href是href=“index.php”section scroll“,那么页面不会滚动,它
href
内容。例如,我的链接滚动到id为锚定链接节的节块
,在我的链接中我有href=“index.php#锚定链接节”
。然而,在我的地址栏中,我看到了www.site.com/index.php#锚定链接部分…
。我怎样才能把它脱下来section scroll
,我的href
是href=“index.php”section scroll“
,那么页面不会滚动,它会重新加载,将www.site.com/index.php#section scroll
放在我的地址栏中,然后滚动到我的id$(document).ready(function() {
$('html, body').hide();
if (window.location.hash) {
setTimeout(function() {
$('html, body').scrollTop(0).show();
$('html, body').animate({
scrollTop: $(window.location.hash).offset().top
}, 1000)
}, 0);
}
else {
$('html, body').show();
}
});
我没有滚动动画,我不能滚动到页面上的id,而不必修改我的地址栏
编辑
我按照jom的建议更新了代码:
$(document).ready(function() {
$('html, body').hide();
if $(window.location.hash'a[href$="index#lien-ancre-commu"]') {
setTimeout.click(function (e) {
$('html, body').scrollTop(0) e.showpreventDefault();
$('html, body').animate({
scrollTop: $(window.locationthis.hash).offset().top
}, 1000)
}, 01000);
} else {
$('html, body').show();
})
});
但现在我不再有滚动动画,但页面之间的切换工作
导航菜单代码html:
<ul class="nav navbar-nav navbar-right">
<li><a href="">Accueil</a>
</li>
<li><a href="/index.php#lien-ancre-commu">Communauté</a>
</li>
<li><a href="/index.php#lien-ancre-contact">Contact</a>
</li>
<li><a href="commu">Médias</a>
</li>
<li class="dropdown"><a class="fas fa-angle-down" data-toggle="dropdown">Plus</a>
<ul class="dropdown-menu">
<a href="commu">Admin</a>
</ul>
</li>
</ul>
-
-
-
-
-
一个简单的例子就可以了。通过这样做,您不必删除地址栏中URL的哈希部分——它永远不会附加到地址栏中
$(document).ready(function (e) {
if (window.location.hash) {
scrollToSection(window.location.hash);
}
});
$('a[href$="#lien-ancre-commu"]').click(function (e) {
// Tells the browser not to mess with our links or anchor tags
e.preventDefault();
// Because we are redefining how it should behave...
if (this.pathname === window.location.pathname) {
// ...that is to scroll to a section of the page
// IF we are on the intended page
scrollToSection(this.hash);
}
else {
// Otherwise, redirect them to the page
window.location.replace(this.href);
}
});
function scrollToSection(id) {
$('html, body').animate({
scrollTop: $(id).offset().top
}, 1000);
}
所有这些就绪后,您将拥有以下格式的链接/锚定标签:
<a href="/index.php#lien-ancre-commu">Scroll to section</a>
请注意正斜杠字符(
/
),我们需要它,因为添加它意味着我们将重定向到相对于应用程序基本路径的URL,而不是相对于当前路径的另一个路由。如果href是index.php#section scroll
,而不仅仅是#section scroll
,这将导致页面重新加载。如何修复此问题@Terry?对于中的数字1,删除地址栏中的href内容,通过“href content”您的意思是删除地址栏中URL的哈希部分吗?是的,我想删除URL中的id(例如www.site.com/index[#id]你真的不应该删除它。它允许用户链接到你页面的特定部分。为了更整洁的URL,你删除了熟悉的和预期的用户友好性。评论不用于扩展讨论;此对话已被删除。(你们两人都可以访问此会议室中的帖子)@jom,你能帮我吗?@BelroDe,我很乐意,但我不完全确定你为什么会得到不同的结果…或者你是如何尝试导航到页面的。我不清楚,也许可以查看我们的聊天历史记录。@jom,如果你在这个页面上:你转到导航菜单,点击名为“501 ST”的链接。页面将重新加载并滚动到“关于我们”部分。但是,如果您在带有“滚动”id的页面上,并单击501链接,则页面不会像第一个示例那样重新加载,滚动操作将直接执行,当然,在搜索栏中,基本url地址没有更改。(501eme.wixsite.com/accueil没有变成501eme.wixsite.com/accueil#id)你明白我现在想做什么吗?我在移动设备上试过了,滚动似乎对这两种情况都有效。等等,你为什么希望页面已经在同一页面上时再次重新加载?我们不应该直接滚动到该部分吗?