$(function () { var info = { $sidebar: $('.sidebar'), $sidebarMain: $('.sidebar-main'), $sidebarBody: $('.sidebar-body'), events: [ 'click', 'touchstart', 'touchend', 'touchmove'], init:function () { this.setSidebarEvent(); this.setSidebarMainEvent(); this.setSbItemEvent(); }, setSidebarEvent: function () { var me = this; me.bindEvent( me.$sidebar, me.events[0], function () { me.hidePop(); }); }, setSidebarMainEvent: function () { var me = this; me.bindEvent( me.$sidebarMain, me.events[0], function (e) { if (!!$(e.target).hasClass('sidebar-body') || !!$(e.target).hasClass('sidebar-main')) { me.hidePop(); } }); }, setSbItemEvent: function () { var me = this; me.$sidebarBody.on('click','li.sb-item a',function(){ var $this = $(this) if ($this.parent().hasClass('j-hascode')) { $('li.sb-item a').removeClass('active'); $this.addClass('active'); me.hidePop(); }else{ var sbIList = $this.siblings('.sb-i-list'); var dis = sbIList.css('display'); if (dis == 'none') { me.hideDownSideBar(); sbIList.slideDown(); $this.find('.i-d').addClass('active'); }else { me.hideDownSideBar(); } } }) }, hidePop: function () { var me = this; me.$sidebarMain.hasClass('active') ? me.$sidebarMain.removeClass('active') : me.$sidebarMain.addClass('active'); me.$sidebarBody.hasClass('active') ? me.$sidebarBody.removeClass('active') : me.$sidebarBody.addClass('active'); }, hideDownSideBar: function () { $('.sb-i-list').slideUp(); $('.i-d').removeClass('active'); }, bindEvent: function ( d, ev, cb, nd) { cb && d.on( ev, nd, cb); } }; info.init(); });