我在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
时,上面的代码没有触发。
答案 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内联;打电话,它的工作原理。
我无法记住我发现此代码的位置,但效果很好。