超时功能不起作用

时间:2016-12-20 19:17:18

标签: javascript jquery timeout

我有以下代码,它应该检查是否加载了jQuery,并避免运行我的jQuery函数,直到它被加载。

它似乎不起作用,我认为Timeout函数没有运行或通过它传递正确的函数(runwhenjqueryloaded)。

我花了更多的时间来预算客户的预算,所以任何快速的帮助都会非常感激。谢谢!

function runwhenjqueryloaded(){ 
  if (window.jQuery) {
    console.log("jquery rocks");
    //jquery exists, do what you want 
    $(function() {
      $('.flexslider').flexslider({
        animation: "slide",
        animationSpeed: 400,
        animationLoop: false,
        itemWidth: 210,
        itemMargin: 5,
        minItems: 1,
        maxItems: 4       
      });
    });

  } else {
    setTimeout(function() {runwhenjqueryloaded(); }, 60); 
  }
}
runwhenjqueryloaded();

2 个答案:

答案 0 :(得分:0)

setTimeout在你的代码中运行得很好,但是你可以把它写得更简单:

setTimeout(runwhenjqueryloaded,60)

Aren你在其他地方有错误吗? 尝试在runwhenjqueryloaded()的开头调试或放置一个console.log,然后在" else"之后调试另一个。

答案 1 :(得分:0)

You can use setInterval instead.

function bootstrap($) {
    $(function() {
       $('.flexslider').flexslider({
           animation: "slide",
           animationSpeed: 400,
           animationLoop: false,
           itemWidth: 210,
           itemMargin: 5,
           minItems: 1,
           maxItems: 4       
       });
    });
}

var jqCheck = setInterval(function() {
   if (window.jQuery !== undefined) {
       bootstrap(window.jQuery);
       clearInterval(jqCheck);
   }
}, 60);