无法动态加载jQuery UI - 未捕获TypeError:无法读取未定义的属性'ui'

时间:2014-09-03 10:07:34

标签: javascript jquery jquery-ui

我动态加载我的jQuery和jQuery UI文件。 jQuery文件成功加载,但是当jQuery UI文件加载时发生错误

以下是控制台中显示的内容:Uncaught TypeError:无法读取未定义的属性“ui”

我的代码如下:

(function()
{
var jQuery;
if (window.jQuery === undefined)
{
    var script_tag = document.createElement('script');
    script_tag.setAttribute("type", "text/javascript");
    script_tag.setAttribute("src",
            "//code.jquery.com/jquery-1.11.0.min.js");




    if (script_tag.readyState)
    {
        script_tag.onreadystatechange = function()
        {
            if (this.readyState === 'complete' || this.readyState === 'loaded')
            {
                scriptLoadHandler();
            }
        };
    }

    else
    {
        script_tag.onload = scriptLoadHandler;
    }
    (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);

}

else
{
    jQuery = window.jQuery;

    main();
}

function scriptLoadHandler()
{
    jQuery = window.jQuery.noConflict(true);

    main();
}

function main() {

    jQuery(document).ready(function($) {
        jQuery.getScript('http://code.jquery.com/ui/1.11.1/jquery-ui.min.js', function() {
            jQuery.noConflict(true);
        });
};
})();

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:4)

只需从noConflict调用中删除true即可;这放弃了对$的控制,但留下jQuery来使用jQuery UI:

/******** Called once jQuery has loaded ******/

    function scriptLoadHandler() {
        // Restore $ to its previous values and store the
        // new jQuery in our local jQuery variable
        jQuery = window.jQuery.noConflict(); // no argument!
        // Call our main function
        main();
    }

答案 1 :(得分:0)

使用:

$(document).ready(function() {}); 

$(function() {});

这两个陈述实际上完全相同。所以第二个电话只是第一个电话的快捷方式。

$符号再次只是jQuery的快捷方式。如果您已将jQuery加载到您的网站中,则可以同时使用它们。

 (function($){
 }(jQuery));

这里你调用匿名函数(它有$作为参数)并传入jQuery对象。