• jquery实战定宽


    大家有没有遇到过一个问题,就是一个列表,或是一段文字过多时,截取多余的部分用省略号,好吧,证明你实力的时候到了,我下面先分解一下方法,再用插件写出来,首先我们说的是,用到的第一个方法,就是判断一个字符串 多少个字节。

    function lengthB(str){
        var num=0,len =str.length;
        if(len){
            for(i =0; i<len;i++){
                if(str.charCodeAt(i)>255){
                    num+=2;
                }else{
                    num+=1;    
                }
            }
        }else{
            return 0;
            }
            return num;
    }

    lengthB,这个方法,是返回str的字节数,charCodeAt(i),返回字符的ascii码值,>255,为中文,就是2个字节,否则,为英文一个字节。

    测试看看

    var num =lengthB("test多少个字节");
    alert(num);

    第二个重点来了,传入参数,str(被截取的字符串),length(定宽的宽度),最后返回截取的截取的字符串。

    function substringB(str , length){
        var temp="",num=0;
        _len = lengthB(str);
        if(_len){
            if(_len<length){
                return str;
            }else{
                    for(var i =0; i<length; i++){
                        if(num>=length){
                            break;
                            }
                        if(str.charCodeAt(i)>255){
                            num+=2;
                            temp+=str.charAt(i);
                            }else{
                                num+=1;
                                temp+=str.charAt(i);
                                }
                    }
                    return temp;
                }
            
        }else{
            return null;
            }
        
    }

    第三步:终极方法,相比第二个方法,多了第三个参数,默认是“...”

    function fixedWidth(str,length,char){
        var str = str.toString();
        if(!char){var char ="..."}    
        var num = length - lengthB(str);
        if(num<0){
            str = substringB(str,length-lengthB(char))+char;
        }
        return str;
    }

    注意,返回的str,要把char的字节数减掉哦。

    下面来封装一下插件哦,这里我做的是全局的,(大家试下jquery对象打方法封装插件。下节我再公布)

    (function($){
        $.extend($,{
            fixedWidth :function(str,length,char){
                var str = str.toString();
                if(!char){var char ="..."}    
                var num = length - lengthB(str);
                if(num<0){
                    str = substringB(str,length-lengthB(char))+char;
                }
                return str;
                function lengthB(str){
                    var num=0,len =str.length;
                    if(len){
                        for(i =0; i<len;i++){
                            if(str.charCodeAt(i)>255){
                                num+=2;
                            }else{
                                num+=1;    
                            }
                        }
                    }else{
                        return 0;
                        }
                        return num;
               }
    
    
                function substringB(str , length){
                    var temp="",num=0;
                    _len = lengthB(str);
                    if(_len){
                        if(_len<length){
                            return str;
                        }else{
                                for(var i =0; i<length; i++){
                                    if(num>=length){
                                        break;
                                        }
                                    if(str.charCodeAt(i)>255){
                                        num+=2;
                                        temp+=str.charAt(i);
                                        }else{
                                            num+=1;
                                            temp+=str.charAt(i);
                                            }
                                }
                                return temp;
                            }
                        
                    }else{
                        return null;
                        }
                   }
                }
            });
    })(jQuery);

    调用:

    $(function(){
        var str1 = jQuery.fixedWidth("ddddddfagfa",7);
        alert(str1);
    });
  • 相关阅读:
    Java随笔
    Java随笔
    Java随笔
    CF1271D Portals(反悔贪心)
    CF938D Buy a Ticket(最短路)
    CF1117C Magic Ship(二分)
    HDU6820 Tree(树形dp)
    P2393 美味(主席树+贪心)
    HDU6831 Fragrant numbers(区间dp)
    HDU6832 A Very Easy Graph Problem(生成树)
  • 原文地址:https://www.cnblogs.com/jine/p/2626006.html
Copyright © 2020-2023  润新知