$ this.data(...)未定义。如何调试?

时间:2015-08-24 04:29:51

标签: jquery ajax twitter-bootstrap datetimepicker

我对网络编程很陌生。我在单页面应用程序中使用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控制台。第一次调用工作正常,后续调用会产生错误。奇怪的是,在调用函数之前会产生错误(我添加了'为什么哦为什么'消息作为第一行函数)。

Firebug console

0 个答案:

没有答案