测试jQueryUI是否已加载


129

我正在尝试调试网站,并且我认为jQueryUI可能未正确加载。如何测试jQueryUI是否已加载?

Answers:


243
if (jQuery.ui) {
  // UI loaded
}

要么

if (typeof jQuery.ui != 'undefined') {
  // UI loaded
}

应该做的把戏


2
我的问题是我动态加载jQuery和jQuery.ui。它有时会及时加载,有时则不会。如果未加载ui,如何在调用任何方法之前等待它(或强制加载它)?
加百利·迪亚科内斯库

17
不知道这是否有很大的区别,但是继续使用Boilerplate的jquery测试,他们使用window.jQueryjQuery UI ,因此我使用了测试window.jQuery.ui
Tim B James

这对我不起作用。有人可以看看这个jsfiddle,让我知道我做错了什么吗。jsfiddle.net/vEvYv/1 我希望我的if语句的else运行,因为我没有加载jQuery。除了,它在第一行失败。在浏览器控制台打开的情况下运行页面(使用FF),然后查看该行jQuery is not defined
Dave Haigh 2012年

2
@DaveHaigh-您尚未加载JQuery。JQuery UI取决于JQuery。
克里斯·海恩斯

16

您需要检查jQuery UI 文件和CSS主题是否都已加载。

jQuery UI在jQuery对象上创建属性,您可以检查:

jQuery.ui
jQuery.ui.version

要检查是否已加载必要的CSS文件,建议您使用Firebug,然后在CSS选项卡上查找主题文件。

我以前见过问题,当用户正确加载jQuery UI库但CSS主题丢失时。


要检查是否已加载某些特定功能,检查看起来像(例如,用于工具提示)........................ if( typeof jQuery().tooltip != "undefined" )
jave.web,2016年

7

我知道这是一个老问题,但是这是一个快速的小脚本,您可以使用它包装没有相关事件的所有jQuery UI内容,以确保仅在加载jQuery UI后才执行它们:

function checkJqueryUI() {
    if (typeof jQuery.ui != 'undefined') {
        do_jqueryui();
    }
    else {
        window.setTimeout( checkJqueryUI, 50 );
    }
}
// Put all your jQuery UI stuff in this function
function do_jqueryui() {
    // Example:
    $( "#yourId" ).dialog();
}
checkJqueryUI();

3

只需测试ui对象,例如

<script src="jquery.js"></script>
<script src="jquery-ui.js"></script>
<script>
  $(function(){
    // did the UI load?
    console.log(jQuery.ui);
  });
</script>

1

您可以通过多种方式检查是否已加载jQuery UI:

if (typeof jQuery.ui == 'undefined') {
   // jQuery UI IS NOT loaded, do stuff here.
}

要么

if (typeof jQuery.ui != 'function') {
    // jQuery UI IS NOT loaded, do stuff here.
}

要么

if (jQuery.ui) {
    // This will throw an error in STRICT MODE if jQuery UI is not loaded, so don't use if using strict mode
    alert("jquery UI is loaded");
} else {
    alert("Not loaded");
}


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.