/** * 分类 * @author: xuqi<qi.xu@yoho.cn> * @date: 2015/10/14 */ let $ = require('yoho-jquery'); let FastClick = require('yoho-fastclick'); let $nav = $('.category-nav'), $search = $('#search-input'), $categoryContainer = $('.category-container'), $contents = $categoryContainer.children('.content'), $subLevelItem = $categoryContainer.find('.sub-level li'), $primaryItem = $categoryContainer.find('.primary-level li'); require('common'); $(function() { FastClick.attach(document.body); }); function resetHeight() { let h = document.body.scrollHeight - $search.outerHeight() - $nav.outerHeight(); $contents.height(h); } resetHeight(); $search.focus(function() { $(this).blur(); }); $nav.on('contextmenu', function() { return false; }); $('.category-container').on('contextmenu', function() { return false; }); $nav.on('touchend touchcancel', function(e) { let $this = $(e.target).closest('li'), selector = '.' + $this.data('channel'); if ($this.hasClass('focus')) { return; } $nav.find('li.focus').removeClass('focus'); $this.addClass('focus'); $contents.addClass('hide'); $contents.filter(selector).removeClass('hide'); }); $categoryContainer.on('click', function(e) { let $this = $(e.target), $subLevel, $cur, index; $cur = $this.closest('.p-level-item'); // 第一次单击右则空白处,出现冒泡 if ($(e.target).closest('.sub-level').length <= 0) { e.preventDefault(); } if ($this[0] && $this[0].tagName === 'LI' && $this.find('a').attr('href')) { location.href = $this.find('a').attr('href'); } if ($this[0] && $this[0].tagName === 'A' && $this.attr('href')) { location.href = $this.attr('href'); } if ($cur.length > 0) { index = $cur.index(); $subLevel = $this.closest('.content').find('.sub-level'); if ($this.hasClass('focus')) { return; } $this.closest('.primary-level').children('.focus').removeClass('focus'); $this.addClass('focus'); $subLevel.not('.hide').addClass('hide'); $subLevel.eq(index).removeClass('hide'); } }); $categoryContainer.find('.primary-level').on('touchstart touchend touchcancel', 'li', function() { $primaryItem.removeClass('highlight'); $(this).addClass('highlight'); }).on('touchend touchcancel', 'li', function() { $(this).removeClass('highlight'); }); $categoryContainer.find('.sub-level').on('touchstart', 'li', function() { $subLevelItem.removeClass('highlight'); $(this).addClass('highlight'); }).on('touchend touchcancel', 'li', function() { $(this).removeClass('highlight'); }); $nav.on('touchstart', 'li', function() { $nav.find('li').removeClass('bytouch'); $(this).addClass('bytouch'); }).on('touchend touchcancel', 'li', function() { $nav.find('li').removeClass('bytouch'); });