javascript - 动画不起作用后 JQuery 单击

标签 javascript jquery jquery-animate

当我第一次单击 #menuIcon div 时,我希望它为 #menu div left: 0em 制作动画,然后当我单击时第二次将 #menu 动画到 left: -12em

第一部分有效,但是当我再次单击时什么也没有发生。 #menuIcon#menu 的子级,这会影响什么吗?

这是我的 JS(改编自 this 问题,微查询插件答案):

$(document).ready(function(){

    jQuery.fn.clickToggle = function(a,b) {
        function cb(){
            [b,a][this._tog^=1].call(this);
        }
        return this.on("click", cb);
    };

    $("#menuIcon").clickToggle(function() {   
        $("#menu").animate({left: "0em"}, 500);
    }, function() {
        $("#menu").animate({left: "-12em"}, 500);
    });
});

提前致谢。

根据 John S 的建议,这是相关的(我认为)html:

<div id="menu">

    <div id="menuIcon">
        <div id="menuIcon1"></div>
        <div id="menuIcon2"></div>
        <div id="menuIcon3"></div>
    </div>

</div>

和CSS:

#menu {
    width: 16em;
    height: calc(100% - 5em);
    background-color: blue;
    position: fixed;
    bottom: 0;
    left: -12em;
}

#menuIcon {
    height: 4em;
    width: 4em;
    position: relative;
    top: 0;
    left: 12em;
    background-color: green;
}

最佳答案

只需使用添加的类来切换方向可能会更容易:

$("#menuIcon").on("click", function() {  
     $this = $(this)

     if(!$this.hasClass("open"))
     {
         $("#menu").animate({left: "0em"}, 500);
         $this.addClass("open");
     }
     else
     {
        $("#menu").animate({left: "-12em"}, 500);
        $this.removeClass("open");
     }
 })

这并不像你尝试的那么聪明,但我认为它更容易阅读,并且应该有效

关于javascript - 动画不起作用后 JQuery 单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38152472/

相关文章:

jquery - 使用 jQuery,如何判断元素当前是否为 "hovered"

jquery - 在 IE 中使用 Jquery 动画不透明度时,图像会被剪裁

jquery - 动画滑入式面板

javascript - 在 Django 中使用 SIMPLE javascript 确认删除

javascript - Angular 8,如何发送您从订阅另一个组件的服务中的 http 调用收到的用户信息?

javascript - 在 Javascript 中交换整个数组

javascript - 下一次 safari 的发布日期

javascript - AJAX 调用完成后如何执行操作?

jquery ui datepicker 和 mvc View 模型类型 datetime

javascript - 悬停时临时调整元素的高度