我有这个功能:
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
我该怎么做?
答案 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
};