9

我在应用程序中有完整的 jQuery UI 副本,所以无论我是从 CDN 加载还是本地加载,我都知道它已经加载。(因为如果我们从 CDN 加载,我们唯一的选择就是对实时版本进行猴子补丁,是吗?)

我从:https ://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.progressbar.js 看到,this.min不幸的是这不是一个可设置的选项(this.options.max相比之下)。我需要this.min-1我的情况下(是的,应用程序范围内,我们已经在团队内部讨论过这个问题,我们理解 jQuery 决定的原因,我们只需要它不是),所以我唯一的选择似乎是猴子补丁原型或维护我自己的插件。我还看到他们现在正在使用“小部件”架构来加载 jQuery UI 对象。

在这个特定的应用程序中,我的脚本大致加载如下:

/javascripts/lib/jquery.min.js
/javascripts/lib/jquery-ui.min.js
...
/javascripts/company.utils.js
/javascripts/company.helpers.js
...
page level includes of javascript libraries
...
page level javascript

所以我正在考虑进入 company.utils.js 并像这样定义一个monkeypatch:

$.ui.progressbar.prototype.min = -1;

但是,我很好奇这是否是猴子补丁这个对象的正确方法。可以肯定的是,但我想我会询问更广泛的 StackOverflow 社区,并为未来的搜索者提供一些可谷歌搜索的内容。

4

1 回答 1

4

对,那是正确的。或者,如果您使用的是 jQuery UI 1.9,您可以使用小部件工厂来定义您的扩展:

$.widget( "ui.progressbar", $.ui.progressbar, {
    min: -1
});

虽然它稍微冗长一些。

于 2012-12-18T20:16:19.847 回答