javascript - 为什么这段 jQuery 代码不起作用?

标签 javascript jquery

只有第一个函数有效。当我再次单击该按钮时,什么也没有发生。控制台始终打印 1。

$('#mobile-menu:not(.active)').click(
  function (e) {
    $('#wrapper').addClass('show-menu');
    $(this).addClass('active');
    $('#sidebar').show();
    e.preventDefault();
    console.log(1);
  }
);
$('#mobile-menu.active').click(
  function (e) {
    $('#wrapper').removeClass('show-menu');
    $(this).removeClass('active');
    $('#sidebar').hide();
    e.preventDefault();
    console.log(2);
  }
);

最佳答案

因为你直接绑定(bind)到任何东西。添加 active 不会切换事件。这就是您想要的:

$('#mobile-menu').click(
    function (e) {
        var notActive = ! $(this).hasClass('active');
        $('#wrapper').toggleClass('show-menu', notActive);
        $(this).toggleClass('active', notActive);
        // This is what I had originally
        //$('#sidebar')[notActive ? 'show' : 'hide']();
        $('#sidebar').toggle(notActive); // per @ᾠῗᵲᄐᶌ
        e.preventDefault();
        console.log(notActive ? 1 : 2);
    }
);

关于javascript - 为什么这段 jQuery 代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17458488/

相关文章:

javascript - 尝试通过 crunchbase API 提取 JSON 数据。我究竟做错了什么?

javascript - 浏览器未聚焦时从网站复制到剪贴板

javascript - 动画滚动 100%(水平)?

javascript - 将 AngularJS 与 SpringMVC 结合使用 - 为什么以及如何?

javascript - CRM 2011 - Javascript 按钮 - 更改所有实体记录上的字段

javascript 文档就绪一遍又一遍地触发

javascript - OnClick如何选择取消选择状态的背景颜色

jquery - 在分区内使用后拉伸(stretch)并将宽度减小到分区的宽度

当正文中有 url a 标签时 PHP 邮件无法发送

javascript - 使用 Polymer 通过 HTML 导入包含 jQuery 在 Safari 和 Firefox 中不起作用