【问题标题】:jQuery Slide in on click, slideOut on click with addclass not working?jQuery Slide in 点击,slideOut 点击 addclass 不起作用?
【发布时间】:2014-10-24 18:25:29
【问题描述】:

我正在尝试制作一个滑出菜单,其中包含一个用于滑入/滑出的按钮,分类为“打开”。

当单击打开按钮时,jQuery 会滑入并添加“关闭”类并删除“打开”类 - 这工作正常。

然后,当单击“关闭”时,我试图滑出,添加“打开”类并删除“关闭”类以将其恢复到原始状态。

但是关闭不起作用,它添加了关闭类但关闭功能在点击时不起作用,也许你不能在已添加的类上拥有功能......?

非常感谢任何帮助。

            $(".open").click(function(){
                $('.mainmenu').stop().animate({left: '0'}, 800);
                $( ".open" ).addClass( "close" );
                $( ".open" ).removeClass( "open" );
            });

            $(".close").click(function(){
                $('.mainmenu').stop().animate({left: '-180'}, 800);
                $( ".close" ).addClass( "open" );
                $( ".close" ).removeClass( "close" );
            });

【问题讨论】:

    标签: jquery onclick slide addclass removeclass


    【解决方案1】:
    $("body").on('click','.open', function(){
                    $('.mainmenu').stop().animate({left: '0'}, 800);
          $( ".open" ).removeClass( "open" ).addClass( "close" );
    
    
                });
    
    
                $("body").on("click",".close", function(){
                    $('.mainmenu').stop().animate({left: '-180'}, 800);
                    $( ".close" ).addClass( "open" ).removeClass( "close" );
    
                });
    

    更简单的方法,通过使用 on() 方法,用于页面加载中不存在的元素...小提琴:http://jsfiddle.net/urjsw5z1/2/

    【讨论】:

      【解决方案2】:

      假设您的按钮在开始时具有“打开”类。您的 javascript 代码将为“open”类添加回调,并且不会对“close”类执行任何操作,因为还没有此类组件。解决方法是执行以下操作:

      function open() {
          $('.mainmenu').stop().animate({left: '0'}, 800);
          $( ".open" ).addClass( "close" );
          $( ".open" ).removeClass( "open" );
          $(".close").click(function(){
              close();
          });
      }
      
      function close() {
          $('.mainmenu').stop().animate({left: '-180'}, 800);
          $( ".close" ).addClass( "open" );
          $( ".close" ).removeClass( "close" );
          $(".open").click(function(){
              open();
          });
      }
      
      $(".open").click(function(){
          open();
      });
      
      $(".close").click(function(){
          close();
      });
      

      【讨论】:

      • 所以如果我使用 addClass 并想对添加的类执行一个函数,那么该函数必须在添加该类的函数内?
      • 这是关于向存在的东西添加处理程序。当您处于具有“打开”按钮的状态时,文档中不存在“关闭”类。因此将回调绑定到“关闭”类将被忽略。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 2013-09-10
      • 2017-01-21
      • 2017-11-14
      相关资源
      最近更新 更多