将函数转换为jQuery插件

时间:2016-05-01 22:19:22

标签: javascript jquery

我有这个功能:

function abbrNum(number){
    var decPlaces = Math.pow(10, 3);
    var abbrev = ["k", "m", "b", "t", "qd", "qi", "sx", "sp", "oc", "n", "d"];
    for (var i = abbrev.length-1; i>=0; i--){
        var size = Math.pow(10, (i+1) * 3);
        if(size <= number){
            number = Math.round(number*decPlaces/size)/decPlaces;
            if((number == 1000) && (i < abbrev.length - 1)){
                number = 1;
                i++
            }
            number += abbrev[i];
            break;
        }           
    }
    return number;
}

我想将它转换为一个名为format的插件,它从一个span获取一些文本,通过这个函数运行它,设置相同span的文本,它是从函数中得到的结果。 / p>

所以,现在如果你运行这个函数就像这样:

abbrNum(123456); //123.456k
abbrNum(12345678); //12.345m

所以我希望能够选择一个范围,更改它的文本,然后对其进行格式化,例如:

$('span').text(1234).format(); //set span text to 1.234k

我该怎么做?

2 个答案:

答案 0 :(得分:1)

使用jQuery的text()方法

从您拥有的函数创建插件

$.fn.format = function(){
    this.text(function(_, number) {
        var decPlaces = Math.pow(10, 3);
        var abbrev = ["k", "m", "b", "t", "qd", "qi", "sx", "sp", "oc", "n", "d"];
        for (var i = abbrev.length-1; i>=0; i--){
            var size = Math.pow(10, (i+1) * 3);
            if(size <= number){
                number = Math.round(number*decPlaces/size)/decPlaces;
                if((number == 1000) && (i < abbrev.length - 1)){
                    number = 1;
                    i++
                }
                number += abbrev[i];
                break;
            }           
        }
        return number;
    });
}

$('span').text(1234).format();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span></span>

答案 1 :(得分:0)

这是最简单的方法。

$.fn.pluginName = function() {
    // Your Code
};