Javascript jQuery-停止url锚更改页面位置
我有一个文档,其中包含一系列部分,这些部分包含我需要根据URL锚收集的信息 我正在尝试做的示例: URLJavascript jQuery-停止url锚更改页面位置,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个文档,其中包含一系列部分,这些部分包含我需要根据URL锚收集的信息 我正在尝试做的示例: URL <div id='information'>Data should be here!</div> <div id='section-1'>This is data from section 1!</div> <div id='section-2'>This is data from section 2!</div>
<div id='information'>Data should be here!</div>
<div id='section-1'>This is data from section 1!</div>
<div id='section-2'>This is data from section 2!</div>
<div id='section-3'>This is data from section 3!</div>
<div id='section-4'>This is data from section 4!</div>
div{
height: 500px;
}
http://mywebsite.com/page.php#section-2
html
<div id='information'>Data should be here!</div>
<div id='section-1'>This is data from section 1!</div>
<div id='section-2'>This is data from section 2!</div>
<div id='section-3'>This is data from section 3!</div>
<div id='section-4'>This is data from section 4!</div>
div{
height: 500px;
}
jQuery
var hash = window.location.hash;
if(!hash == ""){
var data = $(hash).text();
$("#information").text(data);
}
但是当我加载URL时,jQuery工作正常,但是页面跳转到#section-2
我该如何阻止这种情况发生
提前谢谢 您的条件不正确。应该是
=代码>取而代之
if(hash != ""){
var data = $(hash).text();
$("#information").text(data);
}
为了防止跳转,您可以尝试使用scrollTop()
$(文档).ready(函数(){
var hash=window.location.hash;
if(散列){
$('body')。滚动顶部(0);
}
});代码>
div{
高度:500px;
}
数据应该在这里!
这是第一节的数据!
这是第2节的数据!
这是第3节的数据!
这是第4节的数据代码>我设法找到了修复它的方法
由于某种原因,时间混乱,导致$('body')。scrollTop(0)代码>不工作
我可以通过在滚动到页面顶部之前添加10毫秒的延迟来修复它。
$(document).ready(function(){
if(hash){
setTimeout( function(){
$('body').scrollTop(0);
}, 10 );
}
});
$(document).ready(function(){
if(hash){
setTimeout( function(){
$('body').scrollTop(0);
}, 10 );
}
});
如果页面中存在id=hash的可见div,浏览器将跳转。防止这种情况的一种方法是在css中设置divs display=none,以便在页面加载期间它们不可见,然后在加载之后立即将它们更改为可见
$(function() {
$('div').show();
});
或者,您可能一次只想显示一个部分
$(function() {
$('#section-2').show();
});
另一种方法可能是让div保持可见,但立即滚动回页面顶部
$(function() {
self.scrollTo(0, 0);
});
我设法找到了修复它的方法
由于某种原因,时间混乱,导致$('body')。scrollTop(0)代码>不工作
我可以通过在滚动到页面顶部之前添加10毫秒的延迟来修复它。
$(document).ready(function(){
if(hash){
setTimeout( function(){
$('body').scrollTop(0);
}, 10 );
}
});
$(document).ready(function(){
if(hash){
setTimeout( function(){
$('body').scrollTop(0);
}, 10 );
}
});
我想你误解了这个问题。我不需要帮助收集数据,我需要它来阻止页面跳转到锚。看到编辑,也尝试了。它仍然会跳到锚上。我刚刚试过,它仍然不会跳到顶端。我打开了chrome开发者控制台,运行了$('body')。scrollTop(0)代码>尽管如此,它还是正确地跳了起来。我使用的完整代码太“过分”,没有完整的示例,但我在源代码页中编辑了我的问题。我尝试过这个,但似乎不起作用。页面仍然跳转到锚。你能添加一个小提琴吗?我将无法摆弄代码。你需要添加一个演示。不幸的是,我需要显示div。我尝试了self.scrollTo(0,0)但是像其他答案一样,它似乎不起作用。我不确定是什么阻止了它:/I我已经发布了答案,在滚动之前只需10毫秒的延迟见答案