如何在加载jQuery时执行函数?

时间:2011-08-15 13:13:38

标签: javascript jquery

我正在制作一个书签并使用jQuery(使用noConflict)。我需要等待jQuery加载,以执行所有jQuery代码。

我知道我可以用typeof $查看jQuery,但我实际上更多的是寻找一个事件处理程序。现在我只是使用setTimeout延迟1秒,因为jQuery是经过精确加载的。 我觉得这不是一个好的解决方案。它不是干净的代码,依赖于jQuery加载1s。

还有其他方法可以承受这个吗?

5 个答案:

答案 0 :(得分:5)

仅仅是为了记录,完整性以及那些不知道的人:没有事件处理程序,一个很好的选择是每隔X个时间轮询一次jQuery。例如:

function is_jquery_here(){
    setTimeout(function(){
      if(window.jQuery){
         my_jquery_code_here();
      } else {
        is_jquery_here();
      }
    }, 300);
}
is_jquery_here();

答案 1 :(得分:3)

由于您说是动态附加,因此您可以使用onload

var elem = document.createElement('script');
elem.onload = function() {
    // script is loaded, you can now do things with jQuery
};
elem.src = 'path to jquery';
document.getElementsByTagName('head')[0].appendChild(elem);

答案 2 :(得分:2)

并非每个浏览器都支持.onload脚本元素,因此如果您需要跨浏览器兼容性,请同时使用onreadystatechange

function load( src, callback )
{
  var s,r;
  s = document.createElement('script');
  s.type = 'text/javascript';
  s.src = src;
  s.onload = s.onreadystatechange = function(){
    if ( !r && ( !this.readyState || this.readyState == 'complete' ) )
    {
      r = 1;
      callback();
    }
  };
  document.body.appendChild(s);
}

答案 3 :(得分:0)

如果页面中有jQuery脚本,而您只想确保首先加载了该脚本,那么我强烈建议您使用该脚本

window.onload = function() {
  //.....your jquery code....
};

答案 4 :(得分:-3)

迈克尔是对的。你也可以用这个简写

$(function() {
    // Code for on docload here
});