mobile.js 12.5 KB
/**
 * @h5页面js
 * @author:liuyue
 * @date:2015-05-20
 **/

define('mobile', function(require, exports) {
    var $ = require('jquery'),
        swipe = require("plugins/swipe"),
        share = require("plugins/share"),
        common = require("common"),
        swiper = require("plugins/idangerous.swiper"),
        mlellipsis = require("plugins/mlellipsis");
    require("plugins/imgZoom");
    exports.common = function() {
        var downloadH,
            scrollTop;
        if ($('.header-download').size() > 0) {
            downloadH = $('.header-download').height();
            //顶部app下载位置
            $(window).on('scroll', function() {
                scrollTop = $(window).scrollTop();
                if (!$('.search-wrap input').hasClass('show')) {
                    if (scrollTop >= downloadH) {
                        $('.header-download').addClass('fix');
                        $('.header-download-wrap').addClass('show');
                    } else {
                        $('.header-download').removeClass('fix');
                        $('.header-download-wrap').removeClass('show');
                    }
                }
            });

            //关闭下载
            $('.header-download-wrap').on('click', '.tip-close', function() {
                $('.header-download-wrap').remove();
            });
        }
    };

    exports.index = function() {
        var bannerSwiper;
        bannerSwiper = new swiper('.slide-box', {
            wrapperClass: 'slide-wrap',
            slideClass: 'box',
            autoplay: 5000,
            loop: true,
            pagination: '.slide-navigator .dib',
            paginationElement: 'a',
            autoplayDisableOnInteraction: false
        });
        if ($('.slide-navigator .dib').find('a').size() <= 1) {
            $('.slide-navigator').hide();
        }
        //频道点击效果
        /*$('.channel-list').on('tap', 'li', function() {
            $(this).addClass('current').siblings().removeClass('current');
        });*/
    };
    exports.activity = function() {
        $('.content-tab').on('click', 'li', function() {
            var nowIndex = $(this).index();
            $(this).addClass('current').siblings().removeClass('current');
            $('.content-main').hide().eq(nowIndex).show();
        });

    };
    exports.brand = function() {
        var bannerSwiper;
        var getBrand = function() {
            var brand = $.trim($("input[type='text']").val());
            var template = '<ul class="brand-list cooperation-list clearfix">{li}</ul>';
            var noSearchTemplate = '<div class="no-search" style="display:block;"><p>未搜索到“{brand}”的相关品牌</p><a href="javascript:;" class="all_brand"><查看全部品牌</a></div>';
            var html = '';
            $.ajax({
                type: "post",
                url: "/brand/getbrand",
                data: {
                    brand: brand
                },
                dataType: 'json',
                success: function(data) {
                    var brands = data.data;
                    if (data.code == 200 && brands != "") {
                        $.each(brands, function(k, v) {
                            html += '<li><a href="/brand/detail/id/' + v.id + '" title="' + v.name + '"><div class="img-box">' +
                                '<img src="' + common.getImages(v.logo, '0145x0097', 'blogimg', 'primary') + '" alt="" alt="' + v.name + '"></div>' +
                                '<p>' + v.name + '</p></a></li>';
                        });
                        $(".brand-content").html(template.replace('{li}', html));
                    } else {
                        $(".brand-content").html(noSearchTemplate.replace('{brand}', brand));
                    }
                }
            });
        };

        //大banner滑动
        if ($('.slide-box').find('.box').size() > 1) {
            bannerSwiper = new swiper('.slide-box', {
                wrapperClass: 'slide-wrap',
                slideClass: 'box',
                loop: true,
                pagination: '.slide-navigator .dib',
                paginationElement: 'a',
                autoplay: 5000,
                autoplayDisableOnInteraction: false
            });
        }
        //banner只有一张图时不显示小圆点
        if ($('.slide-navigator .dib').find('a').size() <= 1) {
            $('.slide-navigator').hide();
        }

        //搜索框获得焦点
        $('.search-wrap input').on('focus', function() {
            var offsetTop = $('.search-wrap').offset().top;
            $('.overlay').addClass('show');
            $(this).removeClass('show').addClass('show');

            $('body,html').animate({
                scrollTop: offsetTop
            });
        });
        $('.search-wrap').find('input').on('keyup', function(event) {
            var keycode = event.which;
            if (keycode == 13) {
                $('.search-wrap input').blur();
            }
        });
        $('.search-btn').on('tap', function() {
            $('.search-wrap input').focus().addClass('hasVal');
        });
        //获取所有品牌
        $(".all_brand").live("click", function() {
            $("input[type='text']").val("");
            getBrand();
        });
        $('.search-wrap input').on('blur', function() {
            var txtInput = $(this);
            $('.overlay').removeClass('show');
            if (txtInput.val() === '') {
                txtInput.removeClass('hasVal');
            } else {
                txtInput.addClass('hasVal');
            };
            getBrand();
        });
        getBrand();
    };

    exports.scene = function() {
        $('.scene-tab').on('tap', 'li', function() {
            var nowIndex = $(this).index();
            if ($(this).hasClass('disable')) return;
            $(this).addClass('current').siblings().removeClass('current');
            $('.main-layout').removeClass('current').eq(nowIndex).addClass('current');
        });
        $('.scene-content').find('.layout-item').each(function() {
            $(this).imgZoom();
        });
    };

    exports.detail = function() {
        var shareUrl = $(".share").attr("data-link"),
            shareCover = $(".share").attr("cover-url"),
            detailTitle = $('.detail-title').find('.title'),
            detailSubtitle = $('.detail-title').find('.subtitle'),
            slideSwiper;
        mlellipsis.init();
        
        //多图滑动
        if ($('.slide-box').find('.box').size() > 1) {
            slideSwiper = new swiper('.slide-box', {
                wrapperClass: 'slide-wrap',
                slideClass: 'box',
                loop: true,
                pagination: '.slide-navigator .dib',
                paginationElement: 'a',
                autoplay: 5000,
                autoplayDisableOnInteraction: false
            });
        }
        if ($('.slide-navigator .dib').find('a').size() <= 1) {
            $('.slide-navigator').hide();
        }
        //截字
        $('.related-post').find('.content').each(function() {
            $(this)[0].mlellipsis(2);
        });
        //分享
        share.init({
            shareUrl: shareUrl,
            img: shareCover,
            sinaText: '【YOHOOD 2015】' + detailTitle.text() + '@YOHO潮流志',
            fbTextFunction: function() {
                return {
                    des: '【YOHOOD 2015】' + detailTitle.text(),
                    name: '【YOHOOD 2015】' + detailTitle.text(),
                    caption: '【YOHOOD 2015】' + detailTitle.text(),
                    url: location.href
                }
            },
            tweetText: '【YOHOOD 2015】' + detailTitle.text(),
            qqText: '【YOHOOD 2015】' + detailTitle.text() + '#YOHOOD 2015'
        });
        var videoSize = $("video").size();
        var videoPos = 0;
        if(videoSize > 0) {
            var videoInterval = setInterval(
               	 function() { 
               		 $("video").each(function() { //设置视频高度
               			 if($(this)[0].videoHeight > 0) {
               				 $(this).css({"height": Math.floor($(this)[0].videoHeight * (300 / $(this)[0].videoWidth)) });
               				 videoPos++;
               			 }
               		 });
               		 if(videoPos >= videoSize) clearInterval(videoInterval);
              }, 20);
        }
    };

    exports.show = function() {
        $(".layout-item").bind("click", function(event) {
            if ($(this).attr("isopen") == 1) {
                $(this).find(".image-box .pic-tip").each(function() {
                    $(this).css({
                        display: "none"
                    });
                });
                $(this).attr("isopen", 0);
            } else {
                var imageWidth = $(window).width(),
                    imageHeight = 320;
                $(this).find(".image-box .pic-tip").each(function() {
                    var style_left = parseInt($(this).attr("x")) / 10000 * imageHeight;
                    var style_top = parseInt($(this).attr("y")) / 10000 * imageWidth;
                    $(this).css({
                        top: style_top,
                        left: style_left,
                        display: "block"
                    });

                });
                $(this).attr("isopen", 1);
            }
        });
    };

    exports.news = function() {
        $('select').on('change', function() {
            window.location.href = $(this).val();
        });
        var current_tag = $(".main-layout").attr("current_tag");
        var url = current_tag == "" ? "/news/index": "/news/index/tag/"+current_tag;
        var prevPage = '<a href="{url}"><span class="iconfont">&#xe60f;</span>&nbsp;PREV</a>';
        var lastPage = '<a href="{url}" class="next">NEXT&nbsp;<span class="iconfont">&#xe610;</span></a>';
        var pageHtml = '<div id="pageContent" style="text-align: center;" class="pagination">'+
                      '<div class="pagination-inner clearfix" id="img_page" model="default" rel="">{prevPage}{lastPage}</div></div>';
        var getPagination = function(page, totalPage) {
        	if($("#pageContent").size() >0 ) {
        		return ""
        	}
        	if( page - 1 >= 1 ) {
				 prevPage = prevPage.replace("{url}", url + "/page/" +   ((page - 1 ) * 4 - 3));
				 pageHtml = pageHtml.replace("{prevPage}", prevPage);
			 } 
			 if(page < totalPage) {
				 lastPage = lastPage.replace("{url}", url + "/page/"+ (page * 4 + 1) );
				 pageHtml = pageHtml.replace("{lastPage}", lastPage);
			 }
			 if(page < 1) {
				 pageHtml = ''; 
		     }
			 pageHtml = pageHtml.replace("{prevPage}","").replace("{lastPage}","");
			 return pageHtml;
        }
        $(window).bind("scroll",function()
        {
        	 var total = $(".main-layout").attr("total");
        	 var ajaxPage  = $(".main-layout").attr("page");//ajax请求的page
         	 var total_times = parseInt($(".main-layout").attr("total_times"));
         	 var limit = parseInt($(".main-layout").attr("limit"));
        	 var times = $(".main-layout").attr("times") ? $(".main-layout").attr("times") : 0;
        	 var page = Math.ceil(parseInt(ajaxPage) / (total_times+1));
        	 var totalPage = Math.ceil(total / (limit * (total_times + 1)));
        	 if($(window).scrollTop() >= $(document).height() - $(window).height()- 50 ) {
        	   if(total > limit && times < total_times && page <= totalPage) {
    			 $.ajax
    			 ({
    				 type:"get",
    				 url: url +"/page/"+(parseInt(ajaxPage)+1),
    				 success:function(data)
    				 {
    					 var news_page = $(data);
    					 if($(".main-layout").attr("page") != news_page.attr("page") && news_page.html() != "")
    					 {
    						 $(".main-layout").append(news_page.html());
    						 $(".main-layout").attr({
    							 "total":news_page.attr("total"),
    							 "page":news_page.attr("page"),
    							 "times":++times
    						  });
//    						 console.log(news_page.attr("page"));
//    						 console.log("times:" + times);
    					 }
    					 page = Math.ceil(parseInt(news_page.attr("page")) / (total_times+1));//实现页码
//    					 console.log("page:" + page);
//    					 console.log("totalPage:" + totalPage);
    					 if(times == total_times || news_page.html() == "" || page == totalPage)
    				     {
    						 $(".main-layout").append(getPagination(page, totalPage));
    				     }
    				 }
    			 });			 
        	   } else if(page == totalPage) {
        		   $(".main-layout").append(getPagination(page, totalPage));
        	   }
        	     return false;
        	 }
        });
    };
});