当你点击一个链接时,我有一个在div之间来回弹跳的滑块.它一直工作,直到你添加溢出:隐藏,然后一切都中断! 我为任何人创建了一个demo.您会注意到它有效,但是尝试添加overflow:hidde
我为任何人创建了一个demo.您会注意到它有效,但是尝试添加overflow:hidden到.clickWrapper div来隐藏div滑入并且它会中断.当您单击所需的div时,它将滚动浏览其他div.
http://jsfiddle.net/z67tZ/
$(function() { $(".clickIt a").click(function() { var linked = $(this).attr("href"); var pos = $(linked).position(); $(".clickSlider").stop().animate({ left: -pos.left, }, 500); }); });
<div id="wrapper"> <div class="clickIt"> <a href="#one">one</a> <a href="#two">two</a> <a href="#three">three</a> </div> <div class="clickWrapper"> <div class="clickSlider"> <div id="one">one</div> <div id="two">two</div> <div id="three">three</div> </div> </div> </div>
#wrapper {margin: 0 auto; width: 200px; } .clickWrapper {background:red; position:relative; overflow:hidden; background-color: #CCC; height: 200px; } .clickSlider { position: relative; width: 600px; } #one, #two, #three { float: left; width: 200px; }尝试阻止默认的hashchange,如下所示:
$(".clickIt a").click( function (e) { e.preventDefault(); var linked = $(this).attr("href"), pos = $(linked).position().left; $(".clickSlider").stop().animate({left: -pos}, 500 ); });
FIDDLE
我不完全确定为什么会这样?
我的2cents是尝试滚动到任何锚点的浏览器本机函数,该锚点匹配在哈希前面单击的href属性.
当页面尝试向下滚动到与href具有相同锚点的元素时,这会导致位置混乱.
当使用带有散列的href值并且匹配滚动以外的任何元素ID时,添加preventDefault(或者即使不需要在此处停止任何传播也返回false)总是一个好主意,以避免怪异的错误像这个.