0

我正在使用引导日期选择器插件,我需要headTemplate在插件末尾重载对象。

看起来像这样:

var DPGlobal = {
        modes: [ ... ],
        isLeapYear: function ( year ) {
             [...]
        },
        [...]

        headTemplate: '<thead>'+
                        '<tr class="datepicker-btn-group">'+
                            '<th class="prev"><div class="dp-btn"><i class="timely-icon-arrow-left"/></div></th>'+
                            '<th colspan="5" class="switch"><div class="dp-btn"></div></th>'+
                            '<th class="next"><div class="dp-btn"><i class="timely-icon-arrow-right"/></div></th>'+
                        '</tr>'+
                    '</thead>',
       contTemplate: '<tbody><tr><td colspan="7" class="grid-picker"></td></tr></tbody>'
};

所以,诚然,我还在学习 javascript,所以我试图弄清楚为什么下面的代码不能做我想做的事。

首先,我需要检查外部 JS 文件是否已加载并且该函数是否可用,我正在尝试.load()使用带有回调的 jQuery 方法来做到这一点。我在document目标方面遇到了一些参考错误,我承认对此的最佳实践感到困惑 - 我真的只想说

$( 'lib/bootstrap-datepicker/js/bootstrap-datepicker.js' ).load( function() {
 // overwrite/load function 
}); 

但这会引发一堆目标/引用错误,因此,我正在尝试以下操作,因为 jQuery 文档表明我需要将要检查的脚本作为调用.load()函数的第一个参数而不是目标。这常常让我感到困惑——当我想执行一个全局性的函数并且不引用任何特定的东西(因此document引用尝试)时,引用 jQuery 中的东西。

$( document ).load( 'lib/bootstrap-datepicker/js/bootstrap-datepicker.js', function() {
    origDPGlobal.headTemplate = DPGlobal.headTemplate;
            DPGlobal.headTemplate = // 'string of HTML for new template';
});

最后一件事(对不起大家的弹幕),我不明白 headTemplate 最初是如何通过冒号声明的:

var DPGlobal = {
    [...],
    headTemplate: '// html string',
    contTemplate: '//html string'
};

我是否需要像这样将它们重新声明为数组中的原型对象?

DPGlobal[headTemplate] = '// new html string';
DPGlobal[contTemplate] = '// new html string';

非常感谢您帮助新手!

4

1 回答 1

1

几件事:

首先,load用于将文件的内容加载到元素中。相反,您正在寻找getScript http://docs.jquery.com/Ajax/jQuery.getScript

二、以下相同(只是创建对象):

//one way to build an object
var DPGlobal = {
    headTemplate: '// html string',
    contTemplate: '//html string'
};

//another way to build the same object
var DPGlobal = {};
DPGlobal.headTemplate = 'html string';
DPGlobal.contTemplate = 'html string';

你看,花括号方法最初只是在对象上设置属性,就像你稍后分配它们一样。

第三,您对如何覆盖模板的猜测很接近。如果您在方括号中引用属性,则需要使用字符串:

//your way
DPGlobal['headTemplate'] = '// new html string';
DPGlobal['contTemplate'] = '// new html string';

//same as
DPGlobal.headTemplate = '// new html string';
DPGlobal.contTemplate = '// new html string';
于 2012-10-02T19:13:22.053 回答