$ .ui即使在加载jQuery UI库时也未定义

时间:2019-01-09 19:40:21

标签: javascript jquery jquery-ui

我有一个带有JavaScript的页面,该页面具有一个自调用功能,该功能在页面加载时执行。此页面还包括jquery和jquery ui库(包括第一个jquery,然后包括该jquery ui)。

在关闭body标签之前,页面末尾包含以下JavaScript。

在下面的代码中,即使变量x和y正确表示存在jQuery ui,但是在global.method1函数中,变量z始终是未定义的,因为自从加载jQuery ui以来应该已经定义了变量z。 >

问题

为什么$ .ui是在自调用函数之外以及在同一自调用函数中的文档就绪事件中定义的,而不是在 global.method1 方法中定义的?

我在下面的链接中有一个演示,其中没有看到此行为,即在method1中定义了$ .ui:sample runnable code。因此,这确实令人困惑。

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 :(得分:2)

我试图为您创建一个最小的示例;

  • 使用片段中的jQuery链接创建了一个片段。
  • 向控制台添加了一些日志
  • 添加了对全局方法的调用

所有似乎都已定义。问题必须出在示例中未链接的代码中。

 

var myArray = new Array();
myArray.push({ColumnA:1, ColumnB: 10, ColumnC:100});
myArray.push({ColumnA:1, ColumnB: 20, ColumnC:200});
myArray.push({ColumnA:2, ColumnB: 10, ColumnC:300});
myArray.push({ColumnA:2, ColumnB: 20, ColumnC:400});

var yourValue = myArray.find(e => e.ColumnA == 2 && e.ColumnB == 20 ? true : false);
console.log(theValue);
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);