首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery插件-在变量上调用插件方法

jQuery插件-在变量上调用插件方法
EN

Stack Overflow用户
提问于 2018-01-12 21:01:40
回答 3查看 177关注 0票数 2

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

JSFiddle:https://jsfiddle.net/wuwgtpt3/2/

JS:

代码语言:javascript
运行
复制
$.fn.formatCommas = function() {
  parseFloat(this).toLocaleString(undefined, {
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
  })
}

var number = 1000000;

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

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

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

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

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

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-12 21:21:09

试一下,我已经测试过了:

JSFiddle:https://jsfiddle.net/pvviana/42jcdzz4/

代码语言:javascript
运行
复制
$.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);
票数 1
EN

Stack Overflow用户

发布于 2018-01-12 21:04:14

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

代码语言:javascript
运行
复制
$('div').formatCommas() // or other selector, etc.

这显然不是你的目的所需要的,因为。

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

代码语言:javascript
运行
复制
$.formatCommas = function(str) {
  parseFloat(str).toLocaleString(undefined, {
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
  })
}

然而,老实说,你正在实现的功能最好是项目实用程序模块/函数的一部分,这不应该是你的jQuery代码的一部分。

票数 0
EN

Stack Overflow用户

发布于 2018-01-12 21:17:40

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

代码语言:javascript
运行
复制
//  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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48226832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档