当我在页脚上放置jquery.js时,脚本无效

时间:2012-03-04 00:16:49

标签: jquery

我在jquery.js

之前将</body>放在我的页脚上
<script type="text/javascript" src="/js/jquery.js"></script>

为什么这段代码没有解雇?但是当我在</head>之前在标题上移动jquery.js时,它工作得很好..

$(document).ready(function () {
    $("#sub-category").hide();
    $("#main-category").change(function () {
        var id = $(this).val();
        var dataString = 'id=' + id;
        $.ajax({
            type: "POST",
            url: "/select-category/",
            data: dataString,
            cache: false,
            success: function (html) {
                $("#sub-category").show();
                $("#sub-category").html(html);
            }
        });
    });
});

让我知道为什么当我在页脚中包含jquery.js时,上面的代码没有触发。

4 个答案:

答案 0 :(得分:2)

我打赌你实际上把$(document).ready(function () { });块放在jQuery库之前。 jQuery必须在$(document).ready(function () { });块之前加载才能使其工作。但是,在所有情况下,请将jQuery保留在<head>中,这是适合它的地方

答案 1 :(得分:1)

我已经为此正确地创建了一个简单的垫片。它创建了一个全局jQuery(和$)对象,它只能为domReady排队函数。它非常小,因此您可以在HEAD标记中内联它(内联以避免整个dns查找,延迟等问题),然后在您描述的正文中编写的任何代码仍然可以正常运行。

https://github.com/withjam/jqshim-head

shim本质上存储了传递给jQuery()或jQuery()。ready()的所有函数,等待真正的jQuery可用,然后将它们传递给真正的jQuery()调用以继续isDomReady循环

如果有帮助,请告诉我。

答案 2 :(得分:0)

你的脚本是否包含在'jquery.js'之前?然后它将无法工作,因为无法访问jQuery函数。

为了帮助调试,请考虑在Firefox中使用附加组件“Firebug”或在Chrome / Chromium中使用集成的开发人员工具。两者都按F12打开。

答案 3 :(得分:0)

将以下内容放入页眉:

<script type="text/javascript">
      // Place-holder function to handle jquery, before jquery is loaded  (as jquery is loaded in the footer)
      (function(w,d,u){w.readyQ=[];w.bindReadyQ=[];function p(x,y){if(x=="ready"){w.bindReadyQ.push(y);}else{w.readyQ.push(x);}};var a={ready:p,bind:p};w.$=w.jQuery=function(f){if(f===d||f===u){return a}else{p(f)}}})(window,document)
</script>

在加载jquery脚本后将其放在页脚中:

   <script type="text/javascript">
       // This will make it possible to declare jquery inline
       (function($,d){$.each(readyQ,function(i,f){$(f)});$.each(bindReadyQ,function(i,f){$(d).bind("ready",f)})})(jQuery,document)
</script>

然后在$(document).ready(function(){})中声明所有jquery内联;打电话,它的工作原理。

我无法记住我发现此代码的位置,但效果很好。