在jQuery UI 1.7中,我成功覆盖了datepicker._generateHTML函数,该函数以以下形式运行脚本:
jQuery.datepicker._generateHTML = function(inst) {
...revised code...
};
当我尝试使用相同的方法升级到版本1.8时,遇到了一个问题。 1.8版添加了一个datepicker关闭作用域变量
dpuuid
,在新版本的“...修订的代码...”中引用了该变量。 datepicker._generateHTML现在失败,并带有dpuuid is not defined' error
。我对Java语言还很陌生,无法理解该语言的所有微妙方面。所以我的第一个问题是:“引用闭包作用域变量的函数是否可以被覆盖并仍然访问原始的闭包作用域?”
最佳答案
我在托马斯的jQuery DatePicker how to disable auto day selection while browsing calendar?答案中找到了答案
将以下内容添加到“...修订的代码...”的顶部:
if (!inst.dpuuid) {
for (attr in window) {
if(/^DP_jQuery_/.test(attr)) {
inst.dpuuid = attr.replace(/^DP_jQuery_([0-9]+)/, '$1');
}
}
}
var dpuuid = inst.dpuuid;
消除了
dpuuid is not defined' error
。我在FireBug中看到关闭范围从窗口对象可见,但不知道如何从中提取值。谢谢托马斯!