在脚本包含之前使用jquery?

时间:2015-06-25 17:53:52

标签: javascript jquery

在我的一个PHP项目中,其中一部分由其他人完成。所有js脚本都加载到页脚文件中。 html 在页脚文件处关闭。 如何在包含页脚文件之前使用jquery函数?由于在页脚文件之后使用它会在 html 结束后显示。当我厌倦了在页脚之前使用jquery函数时,我得到了js错误 $ not defined 等等。我搜索了很多类似的问题但是找不到解决方案。我目前无法更改文件包含顺序,因为其他人已经完成了此操作。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

如果像你提到的那样你完全没有控制包含jQuery脚本的位置,你可以设置计时器来检查jQuery何时就绪,例如:



<script>
  var i = setInterval(function() {
    if ($) {
      clearInterval(i);
 
       $(document).ready(function(){
          alert('Ready!');
       })        
    }
  }, 100)
  
</script>  

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

但是否则 - 如果你可以控制它 - 在你的代码之前包括它们。

答案 1 :(得分:1)

此代码只能在现代浏览器中正常运行(IE> 8)

<div class="jq"></div>
<script>
document.addEventListener('DOMContentLoaded', function(){
    $('.jq').html('working');
});
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

示例 - http://jsfiddle.net/2mmdrega/

答案 2 :(得分:1)

I sometimes did something like this:

    function JQueryManager(callback, thisArgument) {

        this.execute = function() {
            if (typeof jQuery == "undefined") {
                console.log("Waiting for jQuery...");
                var self = this;
                var selfArgs = arguments;
                setTimeout(function() {
                    self.execute(selfArgs)
                }, 100)
            } else {
                console.log("Found jQuery. Version: " + jQuery.fn.jquery);
                callback.apply(thisArgument, arguments)
            }

        }
    }

    function myCallback(results) {
        alert("found " + results.length + " results")
    }


    var jQueryManager = new JQueryManager(myCallback);
    jQueryManager.execute($("div"));

That allows you to execute a callabck function when jQuery is available

EDIT: fixed some copy-paste errores