在.hbs模板中调用$(...).datetimepicker报not a function错误
以下是可能导致该错误的具体原因及排查方向:
脚本加载顺序错误
jquery.datetimepicker 插件依赖 jQuery,必须确保脚本引入顺序为:先加载 jQuery,再加载 jquery.datetimepicker.js,最后加载你的初始化脚本 datetime.js。如果 datetime.js 先于插件脚本执行,此时 jQuery 上还未挂载 datetimepicker 方法,就会触发该错误。插件脚本未成功加载
检查插件文件的引入路径是否正确:打开浏览器开发者工具的 Network 面板,刷新页面后查看 jquery.datetimepicker.js 的请求状态。如果显示 404,说明文件路径错误或文件不存在,需修正路径或确认文件存在。jQuery 冲突问题
- 若页面加载了多个版本的 jQuery,后加载的版本会覆盖前一个,可能导致已绑定插件的 jQuery 实例被替换。
- 若其他 JS 库(如 Prototype)占用了
$符号,会导致$无法指向 jQuery。此时可尝试在初始化代码中改用jQuery代替$,或使用闭包传递$:jQuery(document).ready(function($) { $('#your-input').datetimepicker(); });
版本不兼容
部分旧版本的 jquery.datetimepicker 可能不兼容新版 jQuery(如 jQuery 3.x),或新版插件不支持旧版 jQuery。查看插件官方文档确认支持的 jQuery 版本范围,更换匹配的版本即可。初始化时机过早
若你的 HBS 模板是动态渲染(如通过 AJAX 异步插入页面),$(document).ready执行时目标 DOM 元素可能尚未生成,或插件未完成初始化。需将初始化代码放在 DOM 元素渲染完成后执行,例如在模板渲染完成的回调函数中调用 datetimepicker 初始化。插件文件损坏
若 jquery.datetimepicker.js 文件本身损坏或下载不完整,会导致插件无法正常注册到 jQuery 原型上。重新下载官方完整的插件包,替换现有文件后重试。
内容的提问来源于stack exchange,提问作者nightfixed

