Javascript jQuery插件-对变量调用插件方法

Javascript jQuery插件-对变量调用插件方法,javascript,jquery,jquery-plugins,numbers,Javascript,Jquery,Jquery Plugins,Numbers,我正在尝试开发一个非常基本的jquery插件,它使用toLocaleString方法将数字格式化为区域设置字符串,这样我就可以在脚本中重复调用我自己的数字方法,但我似乎根本无法让它工作,而且它总是返回未定义的数字 JSFIDLE: JS: 通过使用$.fn.formatCommas可以创建jQuery对象的原型方法。那么它就需要像这样使用 $('div').formatCommas() // or other selector, etc. 这显然不是你的目的所需要的 您试图做的是创建简单的静态

我正在尝试开发一个非常基本的jquery插件,它使用toLocaleString方法将数字格式化为区域设置字符串,这样我就可以在脚本中重复调用我自己的数字方法,但我似乎根本无法让它工作,而且它总是返回未定义的数字

JSFIDLE:

JS:


通过使用
$.fn.formatCommas
可以创建jQuery对象的原型方法。那么它就需要像这样使用

$('div').formatCommas() // or other selector, etc.
这显然不是你的目的所需要的

您试图做的是创建简单的静态方法:

$.formatCommas = function(str) {
  parseFloat(str).toLocaleString(undefined, {
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
  })
}

但是,老实说,您正在实现的功能最好是project utility模块/功能的一部分,这不应该是您的jQuery代码的一部分。

这里是您可以在您的案例中使用的代码原型(我不测试,但必须工作):

试试看,我已经测试过了:

JSFiddle:

$.formatCommas = function(str) {
  parseFloat(str).toLocaleString(undefined, {
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
  })
}
//  ATTEMPT 1
(function ($){
    $.formatCommas = function(str){
        return parseFloat(str).toLocaleString(undefined, {
            minimumFractionDigits: 2,
            maximumFractionDigits: 2
        });
    });
}(jQuery));

//  ATTEMPT 2
// To avoid some problem if many library are declared
(function ($){
    // method augmentation
    $.fn.formatCommas = function() {
        var str = this.val();
        str = parseFloat(str).toLocaleString(undefined, {
            minimumFractionDigits: 2,
            maximumFractionDigits: 2
        });
        this.val(str);

        // to permit continue method call after this one !
        return this;
    };
}(jQuery));

// ATTEMPT MERGE
(function ($){
    $.formatCommas = function(str){
        return parseFloat(str).toLocaleString(undefined, {
            minimumFractionDigits: 2,
            maximumFractionDigits: 2
        });
    });

    $.fn.formatCommas = function() {
        var str = this.val();
        str  = $.formatCommas(str);
        this.val(str);

        return this;
    };
}(jQuery));
$.fn.formatCommas = function(str){
        return parseFloat(str).toLocaleString(undefined, {
            minimumFractionDigits: 2,
            maximumFractionDigits: 2
        });
}

var number = 1000000;

//attempt 1
var formatted = $.fn.formatCommas(number);


console.log('formatted number: ' + formatted);

$('#number').val(number);

$('#formatted').val(formatted);