我在应用程序中有一个完整的jQuery UI副本,所以无论我是从CDN加载还是本地加载都没关系,我所知道的是它已经加载了。 (因为如果我们从CDN加载我们唯一的选择是monkeypatch实时版本,是吗?)
我从https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.progressbar.js看到,this.min
遗憾的是不是一个可设置的选项(this.options.max
相反)。在我的情况下,我需要this.min
为-1
(是的,在整个应用程序范围内,我们已在团队内部讨论过这个问题,我们理解jQuery决策的原因,我们只是需要它) ,所以我唯一的选择似乎是monkeypatch原型或维护我自己的插件。我也看到他们现在正在使用“widget”架构来加载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;
然而,我很好奇这是否是monkeypatch这个对象的正确方法。很确定它是,但我想我会问更广泛的StackOverflow社区,并为未来的搜索者提供可转发的东西。
答案 0 :(得分:4)
是的,这是正确的。或者,如果您使用的是jQuery UI 1.9,则可以使用小部件工厂来定义扩展名:
$.widget( "ui.progressbar", $.ui.progressbar, {
min: -1
});
虽然稍微冗长一点。