我正在使用jQuery.toggle和.animate作为位于页面底部的导航菜单。导航由两个div组成,一个作为外部容器,另一个作为容纳导航按钮等的内部容器。
我想要实现的是;你点击导航,它的位置动画,关闭导航,你只需再次点击它,它会动画回到它在页面底部的原始位置。
我遇到的问题是当您点击导航按钮时没有任何反应,即使浏览器状态栏显示目标网址,它也不会像您一样转到链接。
这是a link
jQuery的:
$('#navContainer').toggle(function() {
$('#navInner').animate({
bottom: '+=350'
}, 400, 'swing', function() {
});
}, function() {
$('#navInner').animate({
bottom: '-=350'
}, 400, 'swing', function() {
});
});
CSS:
#navContainer {
background-color:#0FF;
height:520px;
margin:0px 0px 0px 60px;
position:fixed;
cursor:pointer;
bottom: 0px;
}
#navInner {
background:url(../images/appinstructions/nav2.png);
background-repeat:no-repeat;
width:638px;
height:491px;
position:absolute;
bottom:-350px;
}
HTML:
<div id="navContainer">
<div id="navInner">
<a id="navhomeBtn" href="appInstuc.html"></a>
<a id="navhelpBtn" href="appInstuc.html"></a>
<a id="geBtn" href="http://www.ge.com/" target="_blank"></a>
<div id="pages">
<a href="ipadApp1.html"><img src="images/appinstructions/page1.png" alt="page 1" class="page"/></a>
<a href="app1-1.html"><img src="images/appinstructions/page2.png" alt="page 2" class="page"/></a>
<a href="appRoots.html"><img src="images/appinstructions/page3.png" alt="page3"class="page"/></a>
</div><!--close pages-->
</div><!--close navInner-->
</div><!--close navContainer-->
答案 0 :(得分:3)
问题似乎与.toggle
函数有关,如果您使用.click
链接有效。使用.toggle
链接不起作用的原因是因为链接是#navInner div
的子项,因此点击该链接会触发.toggle
事件。
我建议做这样的事情:
var showing = false;
$('#navInner').click(function(e){
if(e.target != this) return;
// Work out which direction we're moving in
var topValue = "";
if(showing){
topValue = "+=350";
} else {
topValue = "-=350";
}
// Change the showing variable to opposite
showing = !(showing);
// Begin the animation
$(this).animate({
top: topValue
}, 400, 'swing', function(){
// Do nothing
});
});
这将为您提供切换方法的效果,但如果您单击其中一个子元素,则不会为#navInner div
设置动画。
如果您确实希望它仍然为#navInner div
设置动画,只需删除以下行:
if(e.target != this) return;
(虽然因为它们是链接并带你到另一个页面,我怀疑动画#navInner div
是否需要)