$ .ui не определен даже при загрузке библиотеки jquery ui - PullRequest
0 голосов
/ 09 января 2019

У меня есть страница с JavaScript, которая имеет функцию, которая вызывается самостоятельно при запуске страницы. Эта страница также включает библиотеки jquery и jquery ui (сначала включен jquery, а затем jquery ui).

Следующий JavaScript включен в конец страницы перед закрытием тега body.

В приведенном ниже коде, хотя переменные x и y правильно указывают, что jquery ui существует, но в функции global.method1 переменная z всегда неопределена, когда она должна была быть определена с момента загрузки jquery ui.

Вопрос

Почему $ .ui определяется вне функции, вызываемой самим собой, а также внутри события готовности документа в той же самой функции, которая вызывается самим собой, но не в методе global.method1 ?

У меня есть демонстрационная версия по следующей ссылке, в которой я не вижу этого поведения, т. Е. В method1 определен $ .ui: образец исполняемого кода . Так что это действительно сбивает с толку.

var x = $.ui;//defined

(function (global) {

     var dialogOptions;

    $(
        function () {
            var y = $.ui;//defined

            //some more code here

        }
    );

    global.method1 = function () {
        var z = $.ui; //not defined

       //some more code here
    }

    //some more code here

})(window);

1 Ответ

0 голосов
/ 09 января 2019

Я попытался создать для вас минимальный пример;

  • создал фрагмент со ссылками на jQuery во фрагменте.
  • добавил несколько логов в консоль
  • добавлен вызов глобального метода

Кажется, все определено. Ваша проблема должна быть в коде, не связанном в вашем примере.

var x = $.ui; //defined
console.log(`first: ${x}`);
(function(global) {

  var dialogOptions;

  $(
    function() {
      var y = $.ui; //defined
      console.log(`second: ${y}`);
      //some more code here

    }
  );

  global.method1 = function() {
    var z = $.ui; //not defined
    console.log(`third: ${z}`);
    //some more code here
  }

  //some more code here
  global.method1(); //added this call

})(window);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...