jquery实战-定宽(二)

上一节,我提了个问题给大家,说是用jquery对象方法来封装对象,你们做好了吗,现在我把我自己写的代码,供大家参考,当然了,我写的肯定不是最好的,就当时抛砖引玉吧,你们更好,

;(function($){
    $.extend($.fn,{
        fixedWidth : function(options){
            var options = $.extend({},$.fn.fixedWidth.defaults,options);
            //函数体
            var str1;  //这个变量要定义在this.each外面,否则return时,在html调用,会取不到这个值,这个要感谢我的同事,张栋
              this.each(function(){
                var str= $(this).text();
                var length = options.length;
                var char = options.char;
                //
                   if(!char){var char ="..."}    
                var num = length - lengthB(str);
                if(num<0){
                    var _len= length-lengthB(str);
                    str1 = substringB(str,length-lengthB(char))+char;
                    
                }

                //
                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 , length1){
                var temp="",num=0;
                _len = lengthB(str);
                if(_len){
                    if(_len<length1){
                        return str;
                    }else{
                            for(var i =0; i<length1; i++){
                                if(num>=length1){
                                    break;
                                    }
                                if(str.charCodeAt(i)>255){
                                    num+=2;
                                    temp+=str.charAt(i);
                                    }else{
                                        num+=1;
                                        temp+=str.charAt(i);
                                        }
                            }
                            return temp;
                        }
                    
                }else{
                    return null;
                    }
               }
                //
            })//return
            return str1;
        }//fixedWidth
    
   })
  $.fn.fixedWidth.defaults ={length :10,char :"..."};
})(jQuery);

调用:

$(function(){
    $("p").each(function(){
        str = $(this).fixedWidth({length:5,char:"..."});
        $(this).text(str);
    }); 
})
</script>

好了。大家看看吧

转载于:https://www.cnblogs.com/jine/archive/2012/08/07/2626547.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值