关于javascript:jQuery UI错误-f.getClientRects不是函数

Jquery UI error - f.getClientRects is not a function

我正在尝试使Jquery UI工作,但事实并非如此。 这是发生了什么。 我正在加载依赖项:

1
2
3
4
5
6
7
<script src="assets/src/js/angular/angular.js">
<script src="assets/src/js/angular-animate/angular-animate.js">
<script src="assets/src/js/angular-route/angular-route.js">
<script src="assets/src/js/jquery/dist/jquery.js">
<script src="assets/src/js/jquery-ui/jquery-ui.js">
<script src="assets/src/js/app.js">
<script src="assets/src/js/main.js">

那是我的main.js文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$(function () {
    $("input[type=submit]")
        .button()
        .click(function (event) {
            event.preventDefault();
        });
});


$(function () {
    $("#circum").buttonset();
});

$(function () {
    $("#dialog-message").dialog({
        modal: true,
        buttons: {
            Ok: function () {
                $(this).dialog("close");
            }
        }
    });
});

当我在Brackets中运行代码时,Jquery UI已加载但不起作用,但是,当我注释掉main.js文件然后将其带回时,这是我在控制台中遇到的错误,并且UI突然起作用。 太奇怪了

1
2
3
4
5
6
7
8
9
10
11
jQuery.Deferred exception: elem.getClientRects is not a function TypeError: elem.getClientRects is not a function
at jQuery.offset (http://127.0.0.1:27530/assets/src/js/jquery/dist/jquery.js:9779:14)
at Object.getWithinInfo (http://127.0.0.1:27530/assets/src/js/jquery-ui/jquery-ui.js:1157:26)
at jQuery.$.fn.position (http://127.0.0.1:27530/assets/src/js/jquery-ui/jquery-ui.js:1179:23)
at _position (http://127.0.0.1:27530/assets/src/js/jquery-ui/jquery-ui.js:8709:17)
at ._position (http://127.0.0.1:27530/assets/src/js/jquery-ui/jquery-ui.js:415:25)
at open (http://127.0.0.1:27530/assets/src/js/jquery-ui/jquery-ui.js:8334:8)
at .open (http://127.0.0.1:27530/assets/src/js/jquery-ui/jquery-ui.js:415:25)
at _init (http://127.0.0.1:27530/assets/src/js/jquery-ui/jquery-ui.js:8210:9)
at ._init (http://127.0.0.1:27530/assets/src/js/jquery-ui/jquery-ui.js:415:25)
at _createWidget (http://127.0.0.1:27530/assets/src/js/jquery-ui/jquery-ui.js:587:8) undefined

我发现此线程正在讨论该问题,但仍无法解决。

Github

干杯。


您的jQuery UI是什么版本? jQuery UI 1.11.4和jquery 3.0存在相同的问题。 安装jQuery UI 1.12.0-rc.2后,此问题已解决。


如此处所述,添加jQuery 3 Migrate插件可以解决此问题,更新的UI即将发布。

2018年11月5日更新

如果使用最新的jQuery和jQuery UI,请使用最新的jQuery迁移以防止兼容性警告/问题。


原来,这是jQuery 3.x.x和1.12.0之前的jQueryUI之间的兼容性。

包括下面的脚本为我解决了这个问题。

https://code.jquery.com/jquery-migrate-3.0.0.min.js


在完成所有更新并仍然有问题之后,我只是在代码中对其进行了修复:

寻找这个:

1
2
3
if ( !elem.getClientRects().length ) {
    return { top: 0, left: 0 };
}

在此之前输入:

1
2
3
if (!elem.getClientRects()) {
    return { top: 0, left: 0 };
}


1
2
> npm remove jqueryui
> npm i -S jquery-ui-dist

这将下载JQuery UI版本,该版本可以直接包含在标记中。