it-swarm.com.ru

Ошибка пользовательского интерфейса Jquery - f.getClientRects не является функцией

Я пытаюсь заставить работать JQuery UI, но это не так. Вот что происходит. Я загружаю зависимости:

<script src="assets/src/js/angular/angular.js"></script>
<script src="assets/src/js/angular-animate/angular-animate.js"></script>
<script src="assets/src/js/angular-route/angular-route.js"></script>
<script src="assets/src/js/jquery/dist/jquery.js"></script>
<script src="assets/src/js/jquery-ui/jquery-ui.js"></script>
<script src="assets/src/js/app.js"></script>
<script src="assets/src/js/main.js"></script>

Это мой файл main.js:

$(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 загружается, но не работает, однако, когда я комментирую свой файл main.js и затем возвращаю его, это ошибка, которую я получаю в консоли, и пользовательский интерфейс неожиданно работает. Это очень странно.

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

Приветствия.

38
matveytn

Какая версия вашего jQuery UI? У меня была такая же проблема с jQuery UI 1.11.4 и jquery 3.0. После установки jQuery UI 1.12.0-rc.2 проблема была исправлена.

60
Vin Shahrdar

Добавление jQuery 3 Migrate Plugin решает эту проблему, как отмечено здесь , обновленный пользовательский интерфейс скоро появится.


5 НОЯБРЯ, ОБНОВЛЕНИЕ 2018 ГОДА

Если вы используете последнюю версию jQuery и пользовательский интерфейс jQuery, используйте latest jQuery migrate для предотвращения предупреждений/проблем совместимости.


29
Mikee

Оказывается, это совместимость между jQuery 3.x.x и jQueryUI до 1.12.0.

в том числе ниже сценарий решил проблему для меня.

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

8
Ravi Rajan
> npm remove jqueryui
> npm i -S jquery-ui-dist

Это позволит загрузить версию пользовательского интерфейса JQuery, которая может быть включена непосредственно с тегами <script>.

0
Slawa

После того, как все обновления были выполнены, и проблема осталась, я просто исправил ее в коде:

Ищите это:

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

Введите это непосредственно перед этим:

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