【问题标题】:Getting undefined is not a function error when using Pickadate with Meteor将 Pickadate 与 Meteor 一起使用时,未定义不是函数错误
【发布时间】:2015-03-16 05:34:59
【问题描述】:

我在 Meteor 应用程序中使用了 pickadate(日期和时间选择器)。我之前它工作得很好,但突然它不再工作了。这可能与我现在使用Template.dynamic动态调用模板有关。

这是我的代码:

Template.hlesson.rendered = function() {
    $('#lesson_date').pickadate({
        format: 'mm/dd/yyyy'
    });
    var $start_input = $('#lesson_start_time').pickatime({
        interval: 15
    });
    var $end_input = $('#lesson_end_time').pickatime({
        interval: 15
    });
}

我可以在同一页面上成功使用select2插件,但在控制台中出现以下错误:

来自 Tracker afterFlush 函数的异常:未定义不是 function TypeError: undefined is not a function

错误似乎来自 pickadate 函数,但我对为什么会发生这种情况感到困惑。有什么想法吗?

【问题讨论】:

  • 这些元素(课程开始和结束时间)是否有条件地呈现(在eachif 等内部)?
  • @DavidWeldon 不,它们只是在模板中正常呈现。模板是动态加载的,这可能是一个因素。奇怪的是,我还在带有$('#studentList').select2() 的页面上使用了select2,效果很好。

标签: javascript jquery meteor datepicker


【解决方案1】:

这意味着当您运行此 sn-p 代码时,某些元素不存在。尝试将此添加到您的代码中:

console.log($('#lesson_date'));
console.log($('#lesson_start_time'));
console.log($('#lesson_end_time'));

并查看元素是否存在。也许您在错误页面上或在 DOM 内容准备好之前运行此代码(请参阅$(document).ready()

【讨论】:

  • 当我运行这三个 jQuery 元素确实存在并打印在日志中。
  • 检查元素的 .length 属性。如果 jQuery 找不到元素,它会创建它并显示这个新创建的元素。但是由于它没有插入到 DOM 树中,它有 .length = 0
  • .length 属性为每个输出 1
猜你喜欢
  • 1970-01-01
  • 2013-04-01
  • 2019-02-02
  • 2018-04-11
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 2014-08-03
  • 2016-12-06
相关资源
最近更新 更多