$(document).ready() 在 head.ready() 中调用时不触发

$(document).ready() not firing when calls in head.ready()

我在使用 jQuery $(document).ready 和 headjs 框架 v1.0.3 时遇到问题,具有 head.ready 功能,仅适用于 Internet Explorer(版本 11,我无法尝试一个旧版本),只有十分之一...

就在</body>之前我有:

head.load('//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js',function() {
    head.load('//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js');
    head.ready(function() {
        $(document).ready(function() {
            $('.class').show();
        });
    });
});

有时,$(document).ready 事件不会被触发。 它在 Chrome 和 Firefox 上运行良好。

$(window).load doesn't work better.

我试着把 head.ready() 放出来但徒劳无功:

head.load('//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js',function() {
    head.load('//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js');
});
head.ready(function() {
    $(document).ready(function() {
        $('.class').show();
    });
});

我找到了使用 head.ready 而不是 $(document).ready 的解决方案,但我无法使用此解决方案,因为 head.ready(function() {...}); 中的部分来自与未使用的平台共享的代码headjs.

有没有人遇到过这个问题或有解决办法?

我的猜测是存在竞争条件。您可能希望在 head ready 中检查文档是否已经处于就绪状态,因为 document.ready 不会触发

head.ready(function() {
  var readyfunc = function(){
     $('.class').show();
  };

  if (document.readyState === 'complete'){
    readyfunc();
  }else{
    $(document).ready(function() {
      readyfunc();
    });
  }
}

看看是否可行。