Javascript 如何防止哈希标记链接滚动页面?
这简直让我发疯。我正在为一个项目构建一个非常定制的SliderjQuery插件。我的要求之一是,用户必须能够深入链接到特定幻灯片。因此,我所有的幻灯片都有哈希标记,导航链接也有相应的哈希标记。我的问题是,哈希标记链接的默认功能是在javascript触发的滑动动画之上启动的。也就是说,它不是滑动到幻灯片4,而是立即跳到幻灯片4,然后设置动画到幻灯片8。这是尽管使用了我能想到的每一个技巧来阻止默认功能。下面是有问题的代码片段Javascript 如何防止哈希标记链接滚动页面?,javascript,jquery,hash,Javascript,Jquery,Hash,这简直让我发疯。我正在为一个项目构建一个非常定制的SliderjQuery插件。我的要求之一是,用户必须能够深入链接到特定幻灯片。因此,我所有的幻灯片都有哈希标记,导航链接也有相应的哈希标记。我的问题是,哈希标记链接的默认功能是在javascript触发的滑动动画之上启动的。也就是说,它不是滑动到幻灯片4,而是立即跳到幻灯片4,然后设置动画到幻灯片8。这是尽管使用了我能想到的每一个技巧来阻止默认功能。下面是有问题的代码片段 $(slider.nav).bind( 'click', functio
$(slider.nav).bind( 'click', function(event) {
event.preventDefault();
if( !$(this).hasClass('active') ) {
var target = slider.nav.index( $(this) );
slider.animate( target );
}
});
正如您在这里看到的,我使用了event.preventDefault()。我也尝试过返回false。一点运气都没有。有什么想法吗?不看HTML很难说。但如果这是我想象的方式,那么如果href=“#”在任何地方都不起作用,您就不需要在链接中保留href=“#”。您可以使用jQuery仅获取下一张幻灯片,也可以获取第7张幻灯片,而无需依赖href=“#”链接 相反,您可以执行以下操作:
<ul id="slideshow">
<li id="slide_1">Slide 1</li>
<li id="slide_2">Slide 2</li>
<li id="slide_3">Slide 3</li>
</ul>
<a class="slide_nav" data-index="1">1</a>
<a class="slide_nav" data-index="2">2</a>
<a class="slide_nav" data-index="3">3</a>
<a class="slide_nav" data-index="4">4</a>
$('.slide_nav').click(function() {
var slides = $('#slideshow li'); // get all slides
var target_id = $(this).data('id') - 1; // Get the current ID and then subtract 1 (index starts at 0)
slider.animate(slides[target_id]);
});
无论如何,这更像是一个伪示例,我不确定它是否能正常工作,但代码应该有希望为您指明一个避免使用href=“#”的方向,从而避免您现在遇到的问题
祝你好运。哦,天哪。我真的很抱歉。我浪费了每个人的时间 显然,另一位在该网站上工作的开发人员在其他地方添加了一些javascript,大致达到了
if( window.location.hash ) {
window.location = window.location.hash;
}
不知道他们为什么要加上这样的东西。对不起 您还可以将带有
#
的真实链接转换为.ready()
上的数据索引或rel
属性,然后将href
归零。