javascript - jquery从左边滑动隐藏菜单无法配置js

标签 javascript jquery wordpress jquery-animate

所以我已经为此工作了一段时间,我已经尝试了很多在 stackoverflow 上找到的示例,然后开始在一天的大部分时间阅读 js/jquery,但我仍然遇到了这个问题。

基本上,我能够创建一个隐藏的菜单项,单击时它会滑到屏幕上,并且我能够通过切换类来更改用于打开的按钮,然后将其发回。

但是在我尝试再次打开它时第一次完成该过程后,它会打开然后自动关闭。

我构建了一个 jsfiddle,但做错了,因为它的工作方式与我网站上的不一样。

fiddle :http://jsfiddle.net/VpnrV/1/

网站:http://ericbrockmanwebsites.com/dev4/

代码 - html:

<div id="dashboard">
    <nav id="access">
        <div class="open"></div>Here's a bunch of content representing the nav bar.
    </nav>
</div> <!-- dashboard --> 

CSS:

#dashboard {
  font-size:30px;
  float:left;
  position: absolute;
  right: -653px;
  z-index: 100;
}

#access {
    display: block;
    float: right;
    margin: 10px auto 0;
    width:730px;
}

.open {
  background: #cabd32 url(images/open.png) top left no-repeat;
  float:left;
  padding:13px 30px 16px;
}

.close {
  background: #cabd32 url(images/close.png) top left no-repeat;
  float:left;
  padding:13px 30px 16px;
}

我可笑的js:

$(document).ready(function() {  
    $('.open').click(function() {
        $('#dashboard').animate({ right: '0' });
            $(this).toggleClass('close'); 
            $('.close').click(function() {
            $('#dashboard').animate({right: '-653'});
         }
  );
 });

非常感谢任何帮助!

最佳答案

每次单击按钮时,您实际上是在将类 .close 绑定(bind)到多个回调。

你可以试试这个:

$('.open').bind('click',function(){ 
    $('#dashboard').stop().animate(
    {
        right: $(this).hasClass('close') ? '-653px' : '-400px'
    });
    $(this).toggleClass('close');
});

在 animate() 之前使用 stop() 将取消当前动画并执行下一个动画,而无需排队多个动画。

关于javascript - jquery从左边滑动隐藏菜单无法配置js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15147451/

相关文章:

javascript - 缺乏使用 jQuery 的 li 元素的平滑展开折叠

jquery - 当我触发事件时,如何将参数传递给事件处理程序?

WordPress 尝试获取不存在类别的存档

wordpress - 如何隐藏 WordPress 评论表单?

javascript - 如何获得剧作家的元素集合?

javascript - 是否可以将 Range 对象设置为 "backwards selection"?

javascript - 三元素内联 Bootstrap

asp.net - jQuery 替换 div 停止响应鼠标单击

jquery - 在 wordpress 移动设备上隐藏特定帖子

javascript - 它添加了第二个 } 并且不会在级别上添加 1