2012-03-04 58 views
0

我把jquery.js在我之前的页脚</body>脚本不工作时,我把jquery.js和页脚上

<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

+1

你的页面中的哪里是ready()调用?如果它在包含之前,那么函数将不会在您调用它时定义。 – 2012-03-04 00:21:00

+1

解决方法:将它保存在它所属的“”中。 – Ryan 2012-03-04 00:21:49

回答

1

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

+0

将jQuery保留在''这个最佳临时解决方案中。我只是想知道,我何时在其工作的代码周围放置了alert('fired'),但其余部分并未解雇。 – 2012-03-04 00:51:37

0

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

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

+0

总是jquery第一。 – 2012-03-04 00:23:06

1

我已经创建了一个简单的垫片为此准确。它创建一个全局jQuery(和$)对象,它们只能为domReady排队。它非常小,所以你可以将它内联到HEAD标签中(内联以避免整个dns查询,延迟等问题),然后按照你描述的方式编写的正文中的任何代码仍然可以正常工作。

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

垫片基本存储所有传递给jQuery的()或jQuery的()的功能。就绪(),等待真正的jQuery为可供,然后将它们传送到真正的jQuery()调用继续进行isDomReady循环。

让我知道是否有帮助。您加载jQuery脚本后

<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> 

将这个页脚:

<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> 

然后声明所有的jQuery的内联在$(文档中的网页标题

+0

谢谢。正是我需要的! – Vladan 2016-12-17 11:55:15

0

将以下)。就绪(函数(){});电话,它的作品。

我不记得我在哪里找到这段代码,但它工作得很好。