g.size() 不是函数 - Jquery 错误

g.size() is not a function - Jquery Error

我一直在尝试使用 bootstrap datetimepicker 并在我的脚本中包含所有组件,例如 Moment JS、bootstrap-date-time js 和 bootstrap js,但我获取 g.size() 不是函数错误。我正在尝试 运行 以下功能

$(function(){
    $('#datetimepicker').datetimepicker();
  });

我遇到了和你一样的错误,找不到解决办法。事实上,唯一提到 g.size() is not a function 错误的是这个问题,当时只有一个反对票。

我的解决方案是找到一个实际有效的不同日期时间选择器

我找到了这个:https://github.com/xdan/datetimepicker,它很容易上手:

  1. download the zip from github

  2. 包括文件:

  3. 这个HTML

  4. 还有这个JS

    $.datetimepicker.setLocale('en');
    $('#datetimepicker').datetimepicker();

我把它搞定了,并且只用了一小部分时间来尝试让 bootstrap datetimepicker 停止给我 g.size() 错误。

当然还有许多其他日期时间选择器可用:

查看此 post 以获得更多选项:whats-a-good-javascript-time-picker

g.size 错误已为开发人员所知,并且存在于较新版本的 jquery 中。

如果您想使用该日期时间选择器,请返回 jquery 2.1.4 或更早版本。

此处列出了错误:

https://github.com/Eonasdan/bootstrap-datetimepicker/issues/1714

检查您的 jQuery 版本。我使用的是最新的(3.1.1)我使用的一些插件抛出了这个错误。

根据文档:从 jQuery 1.8 开始不推荐使用 .size() 方法。请改用 .length 属性。

(在 3.0 中被移除)

所以简单回滚到 3.0 之前的版本就可以了。

编辑:糟糕,正如 A. Wolff 在评论中所说。

编辑 2:另一件事...如果您想使 jquery 版本保持最新,您可以将 jquery-migrate 插件添加到您的项目中 - https://github.com/jquery/jquery-migrate

.size() 已在 jQuery 的第 3 版中删除,请改用 .length

在您的示例中,将 g.size() 替换为 g.length

请使用最新的 bootstrap-datetimepicker 来解决这个问题。我用过以下版本,错误消失了。

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js"></script>

jQuery 使用v3.3.1.