|
|
/**
|
|
|
* Created by DELL on 2016.9.30.
|
|
|
* 首页
|
|
|
* @author: xuqi<qi.xu@yoho.cn>
|
|
|
* @date: 2015/11/23
|
|
|
*/
|
|
|
|
|
|
var $ = require('yoho-jquery'),
|
|
|
lazyLoad = require('yoho-jquery-lazyload');
|
|
|
|
|
|
|
|
|
require('../common');
|
|
|
|
|
|
var Handlebars = require('yoho-handlebars'),
|
|
|
dot = require('yoho-dotdotdot');
|
|
|
|
|
|
var $tabs = $('.brands-tabs');
|
|
|
var $list = $('.brands-list');
|
|
|
var $gory = $('.brands-category');
|
|
|
var $news = $('.news-txt ul');
|
|
|
var $clearfix = $list.find('dl.clearfix');
|
|
|
var $brand = $list.find('li>a');
|
|
|
var $category = $gory.find('a');
|
|
|
var $tab = $tabs.find('li>a');
|
|
|
var $arr = $tabs.find('.hoverarr');
|
|
|
var $thisTab;
|
|
|
|
|
|
var categoryHeight = $category.height();
|
|
|
var categoryTop = $category.offset() ? $category.offset().top : 0;
|
|
|
var newsHeight = $news.height();
|
|
|
var newsTop = $news.offset() ? $news.offset().top : 0;
|
|
|
var timeout, _id;
|
|
|
|
|
|
|
|
|
//用于临时存储数据
|
|
|
var tempdata = {};
|
|
|
|
|
|
var templete = '<div class="brands-dialog">';
|
|
|
|
|
|
templete += ' <div class="brands-layer">';
|
|
|
templete += ' <div class="layer-content">';
|
|
|
templete += ' <div class="title">{{title}}</div>';
|
|
|
templete += ' <div class="clearfix desc">';
|
|
|
templete += ' <img src="{{icon}}">';
|
|
|
templete += ' <p class="right">{{content}}</p>';
|
|
|
templete += ' </div> ';
|
|
|
templete += ' <div class="featured">';
|
|
|
templete += ' <p>{{subtitle}}</p> ';
|
|
|
templete += ' <div class="clearfix"> ';
|
|
|
templete += ' {{#each imgs}}';
|
|
|
templete += ' <img src="{{src}}">';
|
|
|
templete += ' {{/each}}';
|
|
|
templete += ' </div>';
|
|
|
templete += ' </div>';
|
|
|
templete += ' </div>';
|
|
|
templete += ' </div>';
|
|
|
templete += '</div>';
|
|
|
|
|
|
dot($('.brand-desc'));
|
|
|
|
|
|
|
|
|
lazyLoad($('img.lazy'));
|
|
|
$('.slide-container').slider({
|
|
|
orient: true
|
|
|
});
|
|
|
|
|
|
$.easing.easeOutQuint = function(x, t, b, c, d) {
|
|
|
return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
|
|
|
};
|
|
|
|
|
|
function getQueryString(name) {
|
|
|
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
|
|
|
var r = window.location.search.substr(1).match(reg);
|
|
|
|
|
|
if (r != null) {
|
|
|
return window.unescape(r[2]);
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
// 格式化资讯NEWS标题数量
|
|
|
if ($news.length) {
|
|
|
$news.find('li').each(function() {
|
|
|
var $dom = $(this);
|
|
|
var domHeight = $dom.offset().top - newsTop + $dom.height();
|
|
|
|
|
|
if (domHeight > newsHeight) {
|
|
|
$dom.hide();
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//头部图片TAB切换展示
|
|
|
$tab.eq(0).parent('li').find('.brands-content').css('z-index', '1');
|
|
|
|
|
|
_id = getQueryString('id') ? getQueryString('id') : 0;
|
|
|
|
|
|
// 设置对应TAB选中
|
|
|
$thisTab = $tab.eq(_id);
|
|
|
$thisTab.find('.g-mask').addClass('g-mask-on');
|
|
|
|
|
|
if (_id && $thisTab.length) {
|
|
|
$arr.css({
|
|
|
left: parseFloat($thisTab.offset().left) - parseFloat($tabs.offset().left)
|
|
|
});
|
|
|
}
|
|
|
$tab.hover(function() {
|
|
|
var $this = $(this);
|
|
|
|
|
|
clearTimeout(timeout);
|
|
|
timeout = setTimeout(function() {
|
|
|
var targetLeft = parseFloat($this.offset().left) - parseFloat($tabs.offset().left);
|
|
|
|
|
|
$arr.animate({
|
|
|
left: targetLeft
|
|
|
}, 200, 'easeOutQuint');
|
|
|
}, 50);
|
|
|
$tabs.find('.brands-content').removeAttr('style');
|
|
|
$this.parent('li').find('.brands-content').css('z-index', '1');
|
|
|
|
|
|
}, function() {
|
|
|
clearTimeout(timeout);
|
|
|
});
|
|
|
|
|
|
//品牌类别滚动事件
|
|
|
$(window).scroll(function() {
|
|
|
if ($(this).scrollTop() >= categoryTop) {
|
|
|
$gory.addClass('category-fix');
|
|
|
} else {
|
|
|
$gory.removeClass('category-fix');
|
|
|
}
|
|
|
});
|
|
|
|
|
|
//点击字母,页面滚动到相关区域
|
|
|
$category.click(function() {
|
|
|
var name = $(this).attr('href').split('#')[1];
|
|
|
var targetTop = $list.find('[name=' + name + ']').offset().top - categoryHeight;
|
|
|
|
|
|
if (!$gory.hasClass('category-fix')) {
|
|
|
targetTop -= categoryHeight;
|
|
|
}
|
|
|
|
|
|
$('html,body').animate({
|
|
|
scrollTop: targetTop
|
|
|
}, 200);
|
|
|
return false;
|
|
|
});
|
|
|
|
|
|
|
|
|
//浮层代码
|
|
|
function bindTemplete($select, data, templete) {
|
|
|
var $this = $select;
|
|
|
var offset = {
|
|
|
width: $this.width(),
|
|
|
left: $this.offset().left,
|
|
|
right: parseFloat($(window).width()) - parseFloat($this.offset().left) - parseFloat($this.width())
|
|
|
};
|
|
|
|
|
|
var $parent = $this.parent('li');
|
|
|
var myTemplate;
|
|
|
|
|
|
$list.find('.brands-dialog').remove();
|
|
|
myTemplate = Handlebars.compile(templete);
|
|
|
$parent.append(myTemplate(data));
|
|
|
dot($parent.find('.right'));
|
|
|
|
|
|
if (offset.right - 350 < 0) {
|
|
|
$parent.find('.brands-layer')
|
|
|
.addClass('brands-layer-right').css('left', -330 - offset.width);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//鼠标悬浮品牌,请求数据,并且展示
|
|
|
function bindHoverEvent() {
|
|
|
$brand.unbind('mouseenter').unbind('mouseleave').hover(function() {
|
|
|
var $this = $(this);
|
|
|
var key = $this.attr('data-key');
|
|
|
|
|
|
var options = {
|
|
|
url: '/brands/brandinfo',
|
|
|
type: 'get',
|
|
|
data: {
|
|
|
brandId: key
|
|
|
},
|
|
|
success: function(_data) {
|
|
|
|
|
|
if (_data.code === 200 && _data.brand) {
|
|
|
if (!tempdata.hasOwnProperty(_data.brand.key)) {
|
|
|
tempdata[_data.brand.key] = _data.brand;
|
|
|
}
|
|
|
bindTemplete($this, tempdata[_data.brand.key], templete);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
|
|
|
clearTimeout(timeout);
|
|
|
timeout = setTimeout(function() {
|
|
|
if (!tempdata.hasOwnProperty(key)) {
|
|
|
$.ajax(options);
|
|
|
} else {
|
|
|
bindTemplete($this, tempdata[key], templete);
|
|
|
}
|
|
|
}, 200);
|
|
|
}, function() {
|
|
|
clearTimeout(timeout);
|
|
|
$list.find('.brands-dialog').remove();
|
|
|
});
|
|
|
}
|
|
|
|
|
|
if ($clearfix.length < 26) {
|
|
|
$.ajax({
|
|
|
url: '/brands/brandList',
|
|
|
type: 'POST',
|
|
|
data: {
|
|
|
start: $clearfix.length ? ($clearfix.length + 1) : 1
|
|
|
},
|
|
|
success: function(_data) {
|
|
|
if (_data) {
|
|
|
$list.append(_data);
|
|
|
$brand = $list.find('li>a');
|
|
|
bindHoverEvent();
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
bindHoverEvent(); |
...
|
...
|
|