顶踩组件 前后两版

/* * digglist *  by sunhw 2014-8-14 */;(function() {    var map = {        ding : { type : ‘up‘, text : ‘已顶‘, cls : ‘digglisted digglistUpEd‘ },        cai  : { type : ‘step‘, text : ‘已踩‘, cls : ‘digglisted digglistStepEd‘ }    };    var $list = T.get( ‘_digglist‘ );    if ( !$list ) {        return;    }    // 顶踩动画    function animate( text ) {        var aniRun = T.get( ‘aniRun‘ );        aniRun.innerHTML = text;        F.tween( T.get( ‘aniRun‘ ), F.math.tweener.simple, 0.6, { top : -40 }, function() {            T.dom.remove( aniRun );        } );    }

    // 顶踩处理函数    function handler( $target ) {        var type = T.dom.getAttr( $target, ‘class‘ ), conf = map[ type ];        if ( !conf ) { return; }        T.dom.insertHTML( $target.parentNode, ‘beforeEnd‘, ‘<div id="aniRun" class="animation"></div>‘ );        sendRequest( type, function( json ) {            (type == ‘ding‘) ? animate( ‘+1‘ ) : animate( ‘-1‘ );            T.dom.hide( $target );            var $txt = T.query( ‘b.txt‘, $target.parentNode )[ 0 ];            $txt.innerHTML = conf.text;            T.dom.show( $txt );            T.dom.addClass( $target.parentNode.parentNode, conf.cls );            updateStat( conf.type );        } );    }

    // 更新顶踩数    function updateStat( type ) {        var $dNum = T.query( ‘.sm-ding‘, $list )[ 0 ], dNum = parseInt( $dNum.innerHTML ) || 0;        var $cNum = T.query( ‘.sm-cai‘, $list )[ 0 ], cNum = parseInt( $cNum.innerHTML ) || 0;        var $pBar = T.query( ‘.bar‘, $list )[ 0 ];        if ( type == ‘up‘ ) {            dNum++;        } else {            cNum++;        }        $dNum.innerHTML = dNum;        $cNum.innerHTML = cNum;        // 更新百分比        T.dom.setStyle( $pBar, ‘width‘, (dNum * 100 / (dNum + cNum)) + ‘%‘ );    }

    // 检测用户登录态    function checkLogin( callback ) {        if ( !F.tool.user.userid ) {            F.tool.ajaxLogin.panel();        } else {            callback && callback();        }    }

    // 发送顶踩请求    function sendRequest( type, callback ) {        if ( !map[ type ] ) { return; }        var url = F.config.api + ‘/ajax/digg/‘ + map[ type ].type + ‘/‘ + T.dom.getAttr( $list, ‘data-videoid‘ );        F.get( url, function( json ) {            if ( json.status == 403 ) {                F.tool.ajaxLogin.panel();            } else if ( json.status == 200 ) {                callback && callback( json );            }        } );    }

    function bindDiggEvent() {        var $target = null;        T.on( $list, ‘click‘, function( ev ) {            ev = T.event.get( ev );            $target = ev.target;            if ( $target.tagName == ‘I‘ ) {                checkLogin( function() {                    handler( $target.parentNode );                } );            }        } );    }

    T.dom.ready( function() {        bindDiggEvent();    } );})();
/* * digglist *  by sunhw 2014-8-14 */T.dom.ready( function() {    (function() {        var userid = F.user.userid || F.cookie.get( ‘userid‘ );        var actType = null;

        function handler( dBtns, cBtns, vid, dNum, cNum ) {            T.each( dBtns, function( item, index ) {                T.on( item, ‘click‘, function( e ) {                    T.event.stop( T.event.get( e ) );                    actType = ‘up‘;                    bind( item, actType );                } );            } );            T.each( cBtns, function( item, index ) {                T.on( item, ‘click‘, function( e ) {                    T.event.stop( T.event.get( e ) );                    actType = ‘step‘;                    bind( item, actType );                } );            } );            function bind( ele, type ) {                if ( !userid ) {                    F.tool.ajaxLogin.panel();                    T.observer.send( F.EventCenter.ERR_NO_LOGIN );                } else {                    var parentNode = ele.parentNode.parentNode;                    if ( T.dom.hasClass( parentNode, ‘digglisted‘ ) ) {                        return;                    }                    var url = F.config.api + ‘/ajax/digg/‘ + type + ‘/‘ + vid;                    var upNum = 0, downNum = 0;                    T.dom.insertHTML( ele.parentNode, ‘beforeEnd‘, ‘<div id="aniRun" class="animation"></div>‘ );                    F.get( url, function( resp ) {                        var json = T.json.parse( resp );                        if ( !json || json.status != 200 ) {                            return;                        }                        var data = json.data;

                        function animate( text ) {                            var num = T.get( ‘aniRun‘ );                            num.innerHTML = text;                            F.tween( T.get( ‘aniRun‘ ), F.math.tweener.simple, 0.5, { top : -40 }, function() {                                T.dom.remove( num );                            } );                        }

                        function upActionFun() {                            T.dom.addClass( parentNode, ‘digglisted digglistUpEd‘ );                            animate( ‘+1‘ );                            var eleNext = T.dom.next( ele );                            if ( eleNext ) {                                eleNext.innerHTML = ‘已顶‘;                            }                            T.each( cBtns, function( item ) {                                item.innerHTML = ‘踩‘;                            } );                            T.each( dNum, function( item ) {                                upNum = parseInt( item.innerHTML, 10 );                                item.innerHTML = upNum + 1;                                upNum = upNum + 1;                            } );                            downNum = parseInt( T.query( ‘.sm-cai‘ )[ 0 ].innerHTML, 10 );                            T.dom.setStyle( T.query( ‘.probar .bar-ding‘ )[ 0 ], ‘width‘, parseInt( 100 * (upNum / (upNum + downNum) ), 10 ) + ‘%‘ );                            T.dom.setStyle( T.query( ‘.probar .bar-cai‘ )[ 0 ], ‘width‘, parseInt( 100 - (100 * (upNum / (upNum + downNum))), 10 ) + ‘%‘ );                        }

                        function downActionFun() {                            T.dom.addClass( parentNode, ‘digglisted digglistStepEd‘ );                            animate( ‘-1‘ );                            var eleNext = T.dom.next( ele );                            if ( eleNext ) {                                eleNext.innerHTML = ‘已踩‘;                            }                            T.each( dBtns, function( item ) {                                item.innerHTML = ‘顶‘;                            } );                            T.each( cNum, function( item ) {                                downNum = parseInt( item.innerHTML, 10 );                                item.innerHTML = downNum + 1;                                downNum = downNum + 1;                            } );                            upNum = parseInt( T.query( ‘.sm-ding‘ )[ 0 ].innerHTML, 10 );                            T.dom.setStyle( T.query( ‘.probar .bar-cai‘ )[ 0 ], ‘width‘, parseInt( 100 * (downNum / (upNum + downNum)), 10 ) + ‘%‘ );                            T.dom.setStyle( T.query( ‘.probar .bar-ding‘ )[ 0 ], ‘width‘, parseInt( 100 - (100 * (downNum / (upNum + downNum))), 10 ) + ‘%‘ );                        }

                        if ( type === ‘up‘ && ele.tagName === ‘A‘ ) {//点击顶按钮                            upActionFun();                        } else if ( type === ‘step‘ && ele.tagName === ‘A‘ ) {//点击踩按钮                            downActionFun();                        }                    } );                }            }        }

        var diggTool = T.query( ‘div.tool-digglist‘ );        T.each( diggTool, function( item ) {            var dingBtn = T.query( item.getAttribute( ‘data-dingbtn‘ ), item );            var caiBtn = T.query( item.getAttribute( ‘data-caibtn‘ ), item );            var dingNum = T.query( item.getAttribute( ‘data-dingnumber‘ ), item );            var caiNum = T.query( item.getAttribute( ‘data-cainumber‘ ), item );            var videoid = T.getAttr( item, ‘data-videoid‘ );            if ( !dingBtn || !caiBtn || !videoid ) {                return;            }            handler( dingBtn, caiBtn, videoid, dingNum, caiNum );        } );    })();} );
时间: 2024-10-05 04:19:22

顶踩组件 前后两版的相关文章

添加顶踩功能

phpcms如何添加顶踩功能步骤: 1.在后台模型增加两个字段,一个goodpost,一个badpost;这个步骤简单,按后台新增加字段下一步就行了. 2.在模块/phpcms/modules/content/增加扩展函数newindex.php,代码如下: <?php defined('IN_PHPCMS') or exit('No permission resources.'); class newindex{ function __construct(){ $this->db=pc_ba

react学习笔记1之声明组件的两种方式

//定义组件有两种方式,函数和类 function Welcome(props) { return <h1>Hello, {props.name}</h1>; } class Welcome extends React.Component{ render(){ return <h1>Hello, {this.props.name}</h1>; } } ReactDOM.render( <Welcome name="kevin"/&g

mybatis-plus代码生成器两版(全部生成+部分生成)

mybatis-plus代码生成器两版(全部生成+部分生成) 一次性生成全部文件 package com.layuicms.erp.utils; import java.util.List; import java.util.Scanner; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.core.toolkit.StringUtils;

基于Bootstrap的DropDownList的JQuery组件的完善版

在前文 创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件 中,实现了DropDownList的JQuery组件,但是留有遗憾.就是当下拉菜单出现滚动条的时候,滚动条会覆盖菜单右侧的两个圆角.使得下拉菜单左侧有2个圆角,右侧没有,看上去不是很完美.如下图所示:   本文的内容就是如何恢复右侧的圆角   先看看原本的下拉菜单的HTML结构:   .sh_darkness{background:none; padding:0; margin:0; border:0 no

social-share,社会化分享组件之jquery版

social-share,诚如其简洁所述"支持微信(二维码).微博.Github.Google++.LinkedIn.Twitter.Facebook.RSS-, 支持四种大小设置",够简洁,够漂亮.之前使用的"百度分享"组件,却发现可恶的植入了后台广告,页面刷新一次,广告就加载一次,让人生厌.今天有幸发现这款轻量级的social-share,真让人爱不释手,所以借此机会推广给更多需要的人. 原生的social-share(可通过harttle/social-sha

JS组件系列——两种bootstrap multiselect组件大比拼

原文:http://www.cnblogs.com/landeanfen/p/5013452.html 前言:今天继续来看看bootstrap的另一个组件:multiselect.记得在项目开始之前,博主项目组几个同事就使用哪些js组件展开过讨论,其中就说到了select组件,由于项目的整体风格使用的bootstrap风格,所以在选用select组件的时候优先考虑和bootstrap结合使用的.其中就找到了两个这种组件,大体样式和功能基本相同,经过一番讨论,项目组决定使用davidstutz的b

react的组件的两种形式

1.如果需要传参,在函数中加一个props参数来接受,并且必须向外return一个合法的jsx创建的虚拟DOM. //1. 组件名首字母为大写 2. 必须return 合法的jsx// 这里就可以相当于子组件function Hellow (props){ //props为父组件传过来的数据 //如果打印props的话,只要子组件用的到东西都会打印出来,在这里没有用到父组件中的a数据,因此只会打印出前三个来. return <div> 姓名: {props.name}, 性别: {props.

一篇文章贯穿ACE各种发送接收组件 1.2版

TCP通信过程介绍 首先介绍一下socket通信的基本过程:这里先如果有两个家伙在通信,一个是S.还有一个叫C (1)S打开port监听本地的port看看有没有人来连接: (2)与此同一时候C试图去连接远程的S.连接的地址就是S的地址加上S监听的port号: (3)S收到C的请求之后,建立连接,两方共同持有连接的通道.可互相发送/接收数据随意次.此时S和C无差别. (4)当中一方断开连接,或者由于网络原因中断连接,还有一方也会关闭: (5)此时通信过程结束: 整个步骤例如以下图所看到的 普通AC

vue学习之父子组件通信两种方法

初学vue,最常用及实用的就是父子组件之间的通信了,在此记录一点自己的学习过程 方法一:props及$emit 父组件中先引入子组件,然后components里面注册组件,然后template里调用,调用的时候通过v-bind传递值给子组件,v-on监听子组件$emit传递过来的值 子组件中先用props接收父组件的传值,注意子组件中不可直接修改父组件的传值,可通过watch监听来赋值,通过$emit来传递值给父组件 方法二:ref 父组件传值props方法不变,父组件可通过使用ref来调用子组