我对网络编程很陌生。我在单页面应用程序中使用Bootstrap DateTimePicker模块,只要我在引用DateTimePicker的页面上注入一些HTML,我就会在Firefox / Firebug中收到以下错误消息。
TypeError: $this.data(...) is undefined. jquery->...eval(line 24, col 6)
DateTimePicker组件可以正常工作,但始终会生成此错误。
HTML(Jade)
.datetimepicker.input-group.date.mb-sm(data-date-format="YYYY-MM-DD",data-pick-time="false")
input#accdd.form-control(type='text',value=(child.dob),size="8")
span.input-group-addon
span.fa.fa-calendar
script(src='app/js/dtp.js')
这是我每次需要使用该组件时必须包含的脚本。这是我的另一个问题。为什么每次使用DateTimePicker组件时都需要包含此代码?这都是在启动时加载的,但每次我用这个组件注入新的HTML时都需要包含它。
(function($, window, document){
'use strict';
var Selector = '.datetimepicker';
$(Selector).each(function() {
var $this = $(this),
options = $this.data(); // allow to set options via data-* attributes
$this.datetimepicker($.extend(
options,
{ // support for FontAwesome icons
icons: {
time: 'fa fa-clock-o',
date: 'fa fa-calendar',
up: 'fa fa-arrow-up',
down: 'fa fa-arrow-down'
}
}));
// Force a dropdown hide when click out of the input
$(document).on('click', function(){
$this.data('DateTimePicker').hide();
});
});
}(jQuery, window, document));
所以看起来错误来自这条线:
$this.data('DateTimePicker').hide();
我不能为我的生活弄清楚如何调试这个问题。
这是Bug的Firebug控制台。第一次调用工作正常,后续调用会产生错误。奇怪的是,在调用函数之前会产生错误(我添加了'为什么哦为什么'消息作为第一行函数)。