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>

好了。大家看看吧

posted @ 2012-08-07 13:21  FaithJin  阅读(373)  评论(0编辑  收藏  举报