读书人

乐活广场页的有关逻辑

发布时间: 2012-11-25 11:44:31 作者: rapoo

乐活广场页的相关逻辑

/** * @fileoverview blog-list-plaza * @desc 博文广场瀑布流展示模式, * @author baohe.oyt<ouyangtao404@qq.com> * @date 20120922 * @version 1.0 * @depends kissy, widgets/ImageCtrl/ImageCtrl,widgets/UserOperate/UserOperate,widgets/Waterfall/Waterfall,widgets/Pagination/Pagination,menubutton,template,widgets/Store/Store */KISSY.app('LEHUO');LEHUO.namespace('blogListPlaza');LEHUO.blogListPlaza = (function () {    var S = KISSY,         D = S.DOM,         E = S.Event,        _A = S.all,        _O = S.one,                defaultWidth = 235,//图片默认宽度,修改的话,需要同步改模板        imageMaxHeight = 480,//图片最大高度        marginTop = 10,//瀑布流item的垂直间距        BREAK_MARK = '||',//多个热门标签的分隔符        isNormalListDefault = false,//列表浏览模式默认值(瀑布流)        isFirstTimeGetData = true,        listTypeLocalName = 'plazaListType',        maxNum = 99999,//阅读评论收集数最大值        maxNumStr = '99999+',//达到最大值时的替代string        minHeight = 90,//瀑布流文字块最低高度        waterfallPerPage = 50,        normalListPerPage = 50,                tagmap = {//热门标签对应表            jujia        :   "居家",            diy          :   "手工DIY",            jiaju        :   "家居",            xiaohuxing   :   "小户型",            jujiaqiaomen :   "居家窍门",            zhuangxiu    :   "装修",            yijia       : "宜家",            dapei       : "搭配",            shaiwu      : "晒物",            fushi       : "服饰",            shishang    : "时尚",            jiepai      : "街拍",            peishi      : "配饰",            zherou      : "遮肉",            xianshou    : "显瘦",            mingxing    : "明星",            meishi      : "美食",            tianpin     : "甜品",            xiaochi     : "小吃",            liangtang   : "靓汤",            lanrencaipu   : "懒人菜谱",            shoushenshipu : "瘦身食谱",            meibaican   : "美白餐",            yingyangcan : "营养餐",            huazhuang   : "化妆",            zatoufa     : "扎头发",            bianfa      : "编发",            huayanxian  : "画眼线"        },                waterfallTemplate = '<div target="_blank" title="{{articletitle}}">\                                         {{#if recommend != 0}}\                                        <span href="{{nameurl}}" title="{{username}}">{{username}}\                                        {{#if role == "2"}}\                                            <s target="_blank" href="/article_detail.htm?article_id={{articleId}}">\                                                <img style="width:235px" src="{{summarizeimg}}"/>\                                            </a>\                                        </div>\                                        <s target="_blank" href="/article_detail.htm?article_id={{articleId}}">阅读全文</a></p>\                                    <ul href="/article_detail.htm?article_id={{articleId}}" title="阅读">{{read}}</a>\                                        </li>\                                        <li data-articleid="{{articleId}}" data-title="{{articletitle}}" data-userid="{{userid}}">\                                            {{#if isCollect}}\                                            <a href="javascript:void(0);" title="取消收集">{{collect}}</a>\                                            {{/if}}\                                            {{#if !isCollect}}\                                            <a href="javascript:void(0);" title="收集">{{collect}}</a>\                                            {{/if}}\                                        </li>\                                        <li data-articleid="{{articleId}}" data-title="{{articletitle}}" data-userid="{{userid}}">\                                            <a target="_blank" href="/article_detail.htm?article_id={{articleId}}" title="评论">\                                                {{#if commentcount != 0}}\                                                   {{commentcount}}\                                                {{/if}}\                                            </a>\                                        </li>\                                    </ul>\                                </div>\                                <div target="_blank" alt="乐活广场页的有关逻辑" />\                    {{/if}}\                    <img src="{{portrait}}" alt="乐活广场页的有关逻辑" />\                    {{#if role == "2"}}\                    <s target="_blank" target="_blank" target="_blank"><img src="{{summarizeimg}}" alt="乐活广场页的有关逻辑" /></a></div>\                            {{/if}}\                            <div target="_blank" href="/article_plaza.htm?per_page=30&pageNum=1&key={{encodeURIComponent(_ks_value)}}&newArticle=false&count=false">{{_ks_value}}</a>\                                {{/each}}\                                </span>\                            </div>\                        </div>\                        {{#if sourceUrl != ""}}\                        <div target="_blank">{{from}}</a></div></div>\                        {{/if}}\                        <ul data-articleid="{{articleId}}" data-title="{{articletitle}}" data-userid="{{userid}}">\                                <a target="_blank" href="/article_detail.htm?article_id={{articleId}}" title="评论">\                                    {{#if commentcount != 0}}\                                       {{commentcount}}\                                    {{/if}}\                                </a>\                            </li>\                            <li data-articleid="{{articleId}}" data-title="{{articletitle}}" data-userid="{{userid}}">\                            {{#if isCollect}}\                            <a href="javascript:void(0);" title="取消收集">{{collect}}</a>\                            {{/if}}\                            {{#if !isCollect}}\                            <a href="javascript:void(0);" title="收集">{{collect}}</a>\                            {{/if}}\                            </li>\                            <li href="/article_detail.htm?article_id={{articleId}}" title="阅读">{{read}}</a>\                            </li>\                        </ul>\                    </div>\                    <div href="#contents" data-page="{{ startPage }}">首页</a>'+                        '{{/if}}'+                        ''+                        '{{#! 显示上一页 }}'+                        '{{#if currentPage === startPage }}'+                        '<a href="#contents" data-page="{{ currentPage - 1 }}">上一页</a>'+                        '{{/if}}'+                        ''+                        '{{#if showPageNum }}'+                        '{{#! 左边固定显示几页, 如固定显示 1 和 2 }}'+                        '{{#if currentPage > startPage + alwaysDisplayCount - 1}}'+                        '{{#for var i = 0; i < alwaysDisplayCount; i++ }}'+                        '{{#! 避免后面重复显示 }}'+                        '{{#if i + startPage < startIndex }}'+                        '<a href="#contents" data-page="{{ i + startPage }}">{{ i + startPage }}</a>'+                        '{{/if}}'+                        '{{/for}}'+                        '{{/if}}'+                        ''+                        '{{#! 是否显示省略号 }}'+                        '{{#if ellipseText && startIndex > startPage + alwaysDisplayCount }}'+                        '<span href="#contents" data-page="{{ i }}">{{ i }}</a>'+                        '{{#else}}'+                        '<span href="#contents" data-page="{{ i }}">{{ i }}</a>'+                        '{{/if}}'+                        '{{/for}}'+                        '{{/if}}'+                        '{{/if}}'+                        ''+                        '{{#! 显示下一页 }}'+                        '{{#if currentPage === endPage }}'+                        '<a href="#contents" data-page="{{ currentPage + 1 }}">下一页</a>'+                        '{{/if}}'+                        ''+                        '{{#! 显示末页 }}'+                        '{{#if currentPage === endPage }}'+                        '<a href="#contents">末页</a>'+                        '{{#else}}'+                        '<a href="#contents" data-page="{{ endPage }}">末页</a>'+                        '{{/if}}'+                        ''+                        '{{#! 显示当前页和总页数}}'+                        '<span action="/search?q=mp3&tab=all" >-->'+                        '<input type="text" id="J_jumpTo" size="2" value="{{ currentPage }}"/>页'+                        '<button type="submit" id="decorateSelect">'+                        '<option value="10">10</option>'+                        '<option value="20">20</option>'+                        '<option value="30">30</option>'+                        '<option value="40">40</option>'+                        '<option value="50">50</option>'+                        '</select>',        //loading        loading = D.create('<img src="http://img01.taobaocdn.com/tps/i1/T1kKy9XnNcXXXXXXXX-42-42.gif" />');        loading.hide = function() {            var self = this;                        D.remove(self);        };        loading.show = function() {            var self = this,            con = D.get('#page-content-5');                        if(D.contains(con, self) || D.get('.loading', con))return;//检测容器中是否已经存在该元素            D.prepend(self, con);        };                /**         * this的常用属性如下:         *          * content  容器         * leftMessage 待加载数据集合         * pagesize 一页信息个数???         * message 所有请求来的的信息         * isNormalList 是不是常规列表(注意!为了有记忆功能,不要直接赋值,要用工具set_isNormalList赋值)         * isNewArticle 是不是最新浏览         * store 本地存储的实例化对象         * toTopBtn 回到顶部按钮         * isCreateNormalListStructure 普通模式,每页第一次为false,scroll触发信息插入为true,每次翻页重新置false         * isCreateWaterFallStructure  瀑布流模式,同上         * widgets 相关组件         *          */                        return {            config: {                getPageUrl : "",                getListUrl : "",//废弃                param:{},                collectajax:'/ajax/article_collect.htm',                cancelcollect:'/ajax/article_collect.htm?p=delete',                //获取已有专辑列表                getAlbumsAjax : '/ajax/album_title_list.htm',                //创建专辑                createNewAjax : '/ajax/album_create.htm'            },                        init: function() {                var self = this,                    widgetStr = 'widgets/ImageCtrl/ImageCtrl,widgets/UserOperate/UserOperate,widgets/Waterfall/Waterfall,widgets/Pagination/Pagination,menubutton,template,widgets/Store/Store';                                 S.use(widgetStr, function(S, IC, UO, Waterfall, Pagination, MenuButton, Template, Store) {                    self.widgets = {                        //操作给常规list设置图片的组件                        'IC': IC,                        //用户操作组件(收集和取消收集等)                        'UO': UO,                        'Waterfall': Waterfall,                        'Pagination': Pagination,                        'MenuButton': MenuButton,                        'Template': Template,                        'Store': Store                    };                                            S.ready(function() {                        self._initParam();                        // 优先从url上抓取key,填充至当前标签                        self.renderHotLabel(function() {                            //初始化热门标签筛选                             self.bindMoreLabelEvent();                        });                        //初始化“回到顶部功能”                        self._backTop();                        //初始化控制板展示                        self.setRankAndMode();                        //监听热门文章和最新文章的切换按钮,再渲染页码,回调函数中请求数据                        self._sortType();                        //列表模式切换监听                        self._modeType();                        //渲染信息                        self._renderData();                    });                });            },            /**             * 初始设置参数             */            _initParam: function() {                var self = this,                    listType,//从本地存储取出值                rankType = self.getArguments("newArticle"),//取是按照“热门”还是“最新”排列                    modeType = self.getArguments("normalList");//取是按照“常规”还是“瀑布流”排列                self.store = new self.widgets.Store({type:'local'});//本地存储的实例化对象                listType = self.store.get(listTypeLocalName);            self.isNewArticle = (rankType === 'false' || rankType === 'undefined')? false : true;                                //链接里有明确的normalList = true或者false的优先,本地存储的次之,最后再默认的                                if(modeType === 'true' || modeType === 'false'){                    (modeType === 'true')? self.set_isNormalList(true) : self.set_isNormalList(false);                }else{                    listType? self.set_isNormalList(listType) : self.set_isNormalList(isNormalListDefault);                }                         self.content = D.get('#page-content-5');                self.isCreateNormalListStructure = false;//是否已经绑创建通浏览模式的结构,事件监听;                self.isCreateWaterFallStructure = false;//是否已经创建好瀑布流的结构;                self.waterRenderNum = 10;//瀑布流一次渲染10个;            },            /**             * 重新加载数据(1.初次打开,2. 浏览模式切换)             */            _renderData: function() {            var self = this;                        //请求页面总页数                self._requestAllData(function(idx) {                    //idx是当前数据的页码,翻页的时候用,这里不用                    self._createPagination();                });            },            /**             * 热门标签部分的初始化             */            bindMoreLabelEvent: function() {                var self = this,                    labelBox = S.one('.inner'),                    labelUlHeight = S.one('.labelList').height(),                    moreLabel = S.one('.tips-bar .morelabel');                if(labelUlHeight <= 30)return;                moreLabel.show();                moreLabel.on('click', function(e) {                    if(labelBox.hasClass('lock')){                        labelBox.removeClass('lock');                        moreLabel.html('收起');                        moreLabel.addClass('open');                        return;                    }                    labelBox.addClass('lock');                    moreLabel.html('更多');                    moreLabel.removeClass('open');                });            },            /**             * 通过             * isNormalList 是不是常规列表         * isNewArticle 是不是最新浏览         * 来重新设置展示(操作面板、回顶按钮)             */            setRankAndMode: function() {            var self = this,            rankBtn = D.get('#J_check_rank'),                    modeBtn = D.get('#J_check_mode'),            rankClassName = self.isNewArticle? 'new' : 'hot',            currentRank = D.get('.'+ rankClassName, rankBtn);            D.addClass(currentRank, 'current');            D.prepend(currentRank, rankBtn);D.removeClass(D.next(currentRank), 'current');                        if(self.isNormalList) {//常规list            D.addClass(modeBtn, 'first');            } else {//瀑布流            D.removeClass(modeBtn, 'first');            }            //重置回到顶部按钮的水平位置                self.toTopBtn.resetMarginRight();            },            /**             * 面包屑的展示             */            renderHotLabel: function(callback) {                var self = this,                    newCrumbs = '',//最新的面包屑                    crumbs = D.get('.current-tips'),//面包屑容器                    currentTag = D.get("#J_tagInfo"),//可能不需要了                    tagName = self.getArguments("key"),//取参数key                    hottag = self.getArguments("hottag"),//取热门标签                    //hotBtn = D.get("#hot-type"),                    //newBtn = D.get("#new-type"),                    labelListBox = D.get('.labelList'),//筛选标签容器                    labelListHtml = '',                    labelList,                    len,                    tags,//把key参数值断开的集合                    hottagname = tagmap[hottag];//获得热门标签参数的对应中文                                //赋值给这里的命名空间,给发请求的时候使用                self.key = (!tagName || tagName === 'undefined')? '' : tagName ;                                //热门标签请求并且渲染                S.ajax({                    url: self.config.siftUrl,                    dataType: 'json',                    data: {                        key: encodeURIComponent(self.key)                    },                    success: function(data) {                        if(!data.success)return;                        //返回空的数组,没有相关标签                        if(data.labelList.length === 0)return;                        S.one('.tips-bar').one('.inner').show();                        labelList = data.labelList;                        len = labelList.length                        for(var i=0; i<len; i++){                            labelListHtml += '<li><a href="'+ labelList[i].link +'">'+ labelList[i].name +'</a></li>';                        }                        D.html(labelListBox, labelListHtml);                        callback();                    }                });                            //hottag存在                if(hottagname != '' && hottagname != undefined) {                    newCrumbs = D.html(crumbs) + '<span id="J_tagInfo">'+ hottagname +'</a>';                    D.html(crumbs, newCrumbs);                    document.title = hottagname+' — 淘宝乐活+';                    return;                }                if(self.key == '') {                    document.title = '全部标签'+' — 淘宝乐活+';                    return;                }                var tags = decodeURIComponent(tagName).split(BREAK_MARK),                    len = tags.length;                                document.title = tags[len-1]+' — 淘宝乐活+';                for(var i=0; i<len; i++) {                    if(i == len - 1){                        newCrumbs += '<span id="J_tagInfo">'+ tags[i] +'</a>';                        continue;                    }                    newCrumbs += '<span id="J_tagInfo">'+ tags[i] +'</a>';                }                D.html(crumbs, D.html(crumbs) + newCrumbs);            },            /**             * 重新设置渲染条件             * 1.页面翻页的时候用             */            resetPageParam: function() {                var self = this,                    brooks,                    paganation;                                loading.show();                //创建新瀑布流实例前,销毁之前的瀑布流实例                self.waterfall = self.waterfall || {};                if(self.waterfall.waterfallCase){                self.waterfall.waterfallCase.end();                }                /**                 * 给普通list,清理事件                 */                self._stopNormalList();                                //普通模式                //{{                if(self.isNormalList) {                    self.isCreateNormalListStructure = false;//翻页的后,结构需要重新来                    D.html(self.content, '');                    paganation = D.get('.dr-blog-list-plaza #page5');                    if(!paganation){                        D.append(D.get('#page5'), D.get('.dr-blog-list-plaza'));                    }                    return;                }                //}}                                //瀑布流模式                //{{                                if(D.get('#page-content-5 .leftCon')) {                    var brooks = D.query('.J_plaza_brook'),                        len = brooks.length;                    for(var i=0; i<len; i++) {                        D.html(brooks[i], '');                    }                    self.isCreateWaterFallStructure = true;//表示已经创建瀑布流结构                } else {                    self.isCreateWaterFallStructure = false;//表示未创建瀑布流结构                }                //把页码挪到大容下中                paganation = D.get('.dr-blog-list-plaza #page5');                if(paganation){                    D.insertAfter(paganation, D.get('#contents'));                }                //}}            },            /**             * 当前页信息渲染结束后的操作             * 1.展示页码             */            _currentPageRenderOver: function() {                var self = this;                //普通模式                if(self.isNormalList) {                    D.css("#page5", 'display' , 'block');                    E.remove(window, 'resize scroll', self._eventBlogList.renderFn);                    return;                }                //瀑布流模式                D.css("#page5", 'display' , 'block');            },            /**             * 渲染方式选择器             */            _rendering: function(){                var self = this;                //普通列表                if(self.isNormalList){                    //给普通的列表绑定渲染信息的事件监听,只在第一次绑定!                    if(!self.isCreateNormalListStructure){                        self._createNormalListStructure();                    }                    self._createList();                    return;                }                                //瀑布流                //给瀑布流绑定渲染信息的事件监听,只在第一次绑定!                if(!self.isCreateWaterFallStructure){                    self._createWaterFallStructure();                }                self._createWaterFall();            },            /**             * 热门排序和最新文章切换             */            _sortType: function() {                var self = this,                rankBtn = D.get('#J_check_rank');                                E.on(rankBtn, 'mouseenter', function(e) {                D.removeClass(rankBtn, 'lock');                });                E.on(rankBtn, 'mouseleave', function(e) {                D.addClass(rankBtn, 'lock');                });                                E.on(D.get('.hot', rankBtn), 'click', function(e) {                e.halt();                //D.addClass(rankBtn, 'lock');                if(D.hasClass(e.currentTarget, 'current'))return;                                D.addClass(rankBtn, 'lock');                self.isNewArticle = false;                self.setRankAndMode();                //hot和new切换,页码数据是一样的                self._createPagination();                });                E.on(D.get('.new', rankBtn), 'click', function(e) {                e.halt();                //D.addClass(rankBtn, 'lock');                if(D.hasClass(e.currentTarget, 'current'))return;                                D.addClass(rankBtn, 'lock');                self.isNewArticle = true;                self.setRankAndMode();                //同hot                self._createPagination();                });            },            /**             * 列表模式切换(常规和瀑布流)             */            _modeType: function() {            var self = this,            modeBtn = D.get('#J_check_mode');                        E.on(D.get('.list', modeBtn), 'click', function(e) {            e.halt();            if(D.hasClass(modeBtn, 'first'))return;            self.set_isNormalList(true);            self.setRankAndMode();                        self._createNormalListStructure();            loading.show();            //模式改变,页码会变,不能直接_createPagination                self._renderData();            });                        E.on(D.get('.big-img', modeBtn), 'click', function(e) {            e.halt();            if(!D.hasClass(modeBtn, 'first'))return;            self.set_isNormalList(false);            self.setRankAndMode();                        self._createWaterFallStructure();            loading.show();            //模式改变,页码会变,不能直接_createPagination                self._renderData();            });            },            /**             * 用于设置和获取self.isNormalList的值             */            set_isNormalList: function(b) {                var self = this;                                if(typeof b == 'boolean'){                    self.store.set(listTypeLocalName, b)                    self.isNormalList = b;                }                return self.isNormalList;            },            /**             * 获取url参数的值             */            getArguments: function(name) {                var reg = new RegExp("(^|\\?|&|#)"+ name +"=([^&]*)", "g"),                     cs;                                window.location.href.replace(reg, function($1,$2,$3){cs = !$3 ? '' : $3; });                return decodeURIComponent(cs);            },            /**             * 判断图片是否超高             * 最大高度为 imageMaxHeight             * 宽度固定为 defaultWidth             */            isOverHeight: function(obj) {                var self = this;                if(imageMaxHeight/defaultWidth < obj.height/obj.width){//确定超高                    return true;                }                return false;            },            /**             * 请求list所有信息             */            _requestAllData: function(callback, idx) {                var self = this,                    hottag = self.getArguments("hottag"),                    pageAllNum = D.attr(D.get("#page5"), "data-page"),                    topid = self.getArguments("topid"),                    hottag = self.getArguments("hottag"),                    dataArguments;//第一次请求现实loading,其他情况,在清理信息之后loading,体验更好if(isFirstTimeGetData){loading.show();}                idx = (idx && (typeof idx == 'number' || typeof idx == 'string'))? idx : 1;                topid = (topid !== 'undefined')? topid : '';                dataArguments = {                    //每页的信息个数                    'pageSize'  : self.isNormalList? normalListPerPage : waterfallPerPage,                     'hottag'    : hottag,                    'key'       : encodeURIComponent(self.key),                    'newArticle': self.isNewArticle,                    'count'     : !self.isNewArticle,                    'topid'     : topid,                    'page'      : idx,                    '_t'        : S.now()                };                if(topid!='undefined') {                    dataArguments.topid = topid;                }                                S.ajax({                    url: self.config.getListUrl,                    dataType: 'json',                    data: dataArguments,                    success: function(data) {                    //检测和处理异常数据,返回数据,是正常的true还是异常false                    var isOk = self._checkSolveRequestDataAbnormal(data);                    if(!isOk)return;                                            self.changePageNum = data.totalPage;//翻页配置设置为返回的总页数                        self.message = data;//给_statusSwitch备用                        callback(idx);                    }                });            },            /**             * 对请求数据的状态分析(status的值),再启动渲染             */            _statusSwitch: function(idx, ready) {                var self = this,                    // newtype = D.prop(D.get("#new-type"), "checked"),                    // hottype = D.prop(D.get("#hot-type"), "checked"),                    //hottag = self.getArguments("hottag"),                    newSelect,                    rs = self.message;                                        //返回顶部,从第一条开始看                scroll(0,0);                    //防止相应时间过长出现翻页                D.css("#page5", 'display', 'none');                if (rs.status === 200) {                    loading.hide();                    //创建list                    self.leftMessage = rs;//把所有信息都放到全局的剩余信息里(里面会越来越少)                    //首次加载数据                    self._rendering();                    // 加载完内容后, 通知下分页器更新加载状态                    ready(idx);                }else if(rs.status === 1) {//最后一页                    var pgNextBtn = D.get('a.pg-next');                    //remove小菊花                    D.html(self.content, '');                    //创建list                    //self._createList(rs);                    self.leftMessage = rs;//把所有信息都放到全局的剩余信息里(里面会越来越少)                    //首次加载数据                    self._rendering();                                        //显示分页、移除翻页按钮功能                    D.css('#page5', 'display' , 'block');                    D.addClass(pgNextBtn, 'pg-disabled');                    E.on(pgNextBtn, 'click', function(e){                       e.halt();                    });                } else {//请求的数据异常                self._checkSolveRequestDataAbnormal(rs);                }                                /*老代码,不知道用处是什么,先留着                var pgSkip = pgFirst = D.get("a.pg-first"),                     pgLast = D.get("a.pg-last");                                D.remove([pgFirst, pgLast]);                cacheIdx = idx;                */            },            /**             * 处理请求有误信息             * 有异常返回true,否则false             */            _checkSolveRequestDataAbnormal: function(rs) {            var self = this;            if(rs.status === 0) {//博文广场无数据                var urlKey = encodeURIComponent(self.getArguments("key"));                    D.html(self.content, '<div id="page5" style="float:left;width:'+ colWidth +'px;"></div>'                                                       : '<div style="float:left;margin-right:'+ marginValue +'px;width:'+ colWidth +'px;"></div>';                }                leftConStr = '<div style="width:741px;overflow:hidden">'+ leftConStr +'</div>';                rightConStr = '<div style="float:left;margin-top:'+ marginTop +'px;width:'+ colWidth +'px;"></div>';                D.html(selfCon, leftConStr);//左边的内容需要清空                D.append(D.create(rightConStr), rightCon);//右边的内容,是加在其原有内容下方                return;                }                //清空原有瀑布流结构内容                var brooks = D.query('.J_plaza_brook');                for(var i=0; i<len; i++) {                D.html(brooks[i], '');            }            },            /**             * 创建常规list模式的基本结构             */            _createNormalListStructure: function(){                var self = this,                    hooks = D.query('.J_plaza_brook');                                //表示常规list模式已经开始                self.isCreateNormalListStructure = true;                //清除瀑布流结构                if(hooks.length > 0){                    D.remove(hooks);                    var leftCon = D.get('.dr-blog-list-plaza .leftCon');                    if(leftCon){                        D.remove(leftCon);                    }                }                self._eventBlogList();            },            /**             * 清除普通list模式的事件             */            _stopNormalList: function() {            var self = this;                        self._eventBlogList = self._eventBlogList || {};            if(!self._eventBlogList.renderFn)return;            E.remove(window, "resize scroll", self._eventBlogList.renderFn);            },            /**             * 普通的列表模式             */            _createList: function() {                var self = this;                //没有剩余信息渲染了                if(self.leftMessage.items.length === 0) {                    self._currentPageRenderOver();                    return;                }                //请求回数据填充首屏数据:当list包裹层 < 可视区 + scrollTop,则加载list数据                if(D.innerHeight(self.content) < D.viewportHeight() + D.scrollTop()) {                    var currentItem = self._limiteMaxNum(self.leftMessage.items[0]),                    domTemplate = S.Template(listTemplate).render(currentItem),                    domList = D.create(domTemplate);                                        self.leftMessage.items.shift();                    D.append(domList, self.content);                    //self._sourcePop(domList);                    var ic = new self.widgets.IC(domList, '.oneimg', [139,139]),                   o = S.clone(self.config);                                       o.wrapclass = D.get('.J_operate', domList);                                        var uo = new self.widgets.UO(o);                    uo.on('Plaza', function(e) {                        var box = e.currentTarget.wraps;                        if(!e.collect)return;                        var str = D.html(D.get('.collect', box)),                        box_a = D.get('.collect', box);                        D.attr(box_a, 'title', '取消收集');                        if(str.indexOf('+') == -1){                            var newNum = parseInt(D.html(D.get('.collect', box)));                            newNum = (newNum == maxNum)? '99999+' : newNum+1;                            D.html(box_a, newNum);                            D.addClass(box_a, 'hover');                            D.removeClass(box_a, 'collectbtn');                            D.addClass(box_a, 'cancelcollectbtn');                        }                    });                    uo.on('Guang_Center', function(e) {                        var box = e.currentTarget.wraps,                            str = D.html(D.get('.collect', box)),                            box_a = D.get('.collect', box);                            D.attr(box_a, 'title', '收集');                        if(str.indexOf('+') == -1){                            var newNum = parseInt(D.html(D.get('.collect', box)));                            newNum = newNum-1;                            D.html(box_a, newNum);                            D.removeClass(box_a, 'hover');                            D.addClass(box_a, 'collectbtn');                            D.removeClass(box_a, 'cancelcollectbtn');                        }                    });                    self._rendering();                }            },            /**             * 普通列表模式的事件监听             */            _eventBlogList: function() {                var self = this,                    timer;                                self._eventBlogList.renderFn = function(){                     if(timer){                        clearTimeout(timer);                    }                    timer = setTimeout(function(){                        clearTimeout(timer);                        self._rendering();                    });                 };                E.on(window, "resize scroll", self._eventBlogList.renderFn);            },            /**             * 来源             */            /*            _sourcePop: function(dom) {                var self = this,                    timer,                    source = D.get('.source', dom);                                if(!source)return;                E.on(source, 'mouseenter', function(e) {                    timer && clearTimeout(timer);                    var pp = D.get('.divpop', this);                                        D.removeClass(pp, 'hidden');                    E.on(pp, 'mouseenter', function() {                        timer && clearTimeout(timer);                        E.remove(pp, 'mouseenter');                    });                    E.on(pp, 'mouseleave', function() {                        E.remove(pp, 'mouseleave');                        D.addClass(pp, 'hidden')                    });                                    });                E.on(source, 'mouseleave', function(e) {                    var _this = this;                    timer = setTimeout(function() {                        var pp = D.get('.divpop', _this);                        D.addClass(pp, 'hidden');                    }, 1000);                });            },*/            /**             * 浮动回到顶部             */            _backTop: function() {                var self = this,                    winheight = D.viewportHeight(),                     isShow = false,                    normalListMargin = -294,                    waterfallMargin = -531,                    //marginRight = self.isNormalList? normalListMargin : waterfallMargin,                    newClassName = self.isNormalList? 'back-to-top-normalList' : 'back-to-top-waterfall',                    //backbtn = D.create('<a href="javascript:;" target="_self" style="display:none;margin-right:'+ marginRight +'px;"></a>'),                    backbtn = D.create('<a href="javascript:;" target="_self" style="display:none;"></a>'),                    btn = D.get(backbtn),                    timer;                                    self.toTopBtn = btn;                self.toTopBtn.resetMarginRight = function(){                    //var marginRight = self.isNormalList? normalListMargin : waterfallMargin;                    var newClassName = self.isNormalList? 'back-to-top-normalList' : 'back-to-top-waterfall',                        oldClassName = self.isNormalList? 'back-to-top-waterfall' : 'back-to-top-normalList';                    //alert(marginRight);                    D.removeClass(self.toTopBtn, oldClassName);                    D.addClass(self.toTopBtn, newClassName);                    //D.css(self.toTopBtn, 'marginRight', marginRight);                };                D.append(backbtn, D.get(".left-large-col-v2"));                E.on(btn, "click", function() {                    isShow=false;                    scroll(0,0);                    D.hide(backbtn);                    D.css(btn,{                        opacity: '0'                    });                });                                E.on(window, "scroll", function() {                    //winheight = D.viewportHeight();                    winheight = 700;                    if(D.scrollTop() > winheight) {                        var st = D.scrollTop();                        D.show(backbtn);                        !isShow && S.Anim(btn, {                            opacity: 1                        }, 0.3).run();                        isShow = true;                        if(S.UA.ie == 6) {                            timer && clearTimeout(timer);                            timer = setTimeout(function() {                                S.Anim(backbtn, {'top':winheight-398+st+"px"}, 0.3, 'easeOut').run();                            }, 400);                        }                    } else {                        isShow = false;                        D.hide(backbtn);                        D.css(btn, {                            opacity: '0'                        });                    }                });            }        };})();
?

读书人网 >Web前端

热点推荐