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