关于JQuery的$(document).ready()放的位置

今天我在项目中用了一下JQuery。
我们的页面是用 JSP+WebWork+部分<%%>代码

首先 ,我将 jquery.js和custom.js  的引用加到<head></head>中所有<script></script>之前。

可页面加载后,死活弹出脚本错误,说$("input") 没有定义。
$("input,select").focus(function(){
$(this).css({background:'#FF9900', border:"1px solid #f00",backgroundColor:'#FFFFEC'});
});

可是,input是我的输入文本框标签。既然整个文档都加载完成了,为什么提示没有到找呢?


后来我将jquery.js和custom.js放在</body>之前。靠,生效了,没有弹出错误了。而且文本框获得焦点也能改变颜色。

我的想法,放在<head></head>之间,难道是webwork里面有程序在执行,导致 dom 页面没有加载完成?

放在最后,就OK了?

请大家说说看吧!
问题补充:
$(document).ready(function(){ 
    $("input,select").focus(function(){  
    $(this).css({background:'#FF9900', border:"1px solid #f00",backgroundColor:'#FFFFEC'});  
    });  
});   

回答 kanny87929的      楼主用了别的JS库了?
是的,我这里面还有别的JS脚本    其中用到了这个库中 $(

那你改成这样写,所有用jQuery中的$的符号都改用jQuery就行了

jQuery(document).ready(function(){

jQuery("input,select").focus(function(){

jQuery(this).css({background:'#FF9900', border:"1px solid #f00",backgroundColor:'#FFFFEC'});

});

});

说实话,我还没这样试过,不过我一般也是在head之间加的

楼主用了别的JS库了?

我一般都放在页面的最下面,呵呵!

[code="javascript"]
$(document).ready(function(){
$("input,select").focus(function(){
$(this).css({background:'#FF9900', border:"1px solid #f00",backgroundColor:'#FFFFEC'});
});
});
[/code]

一般放在哪里都一样,但是Js的执行顺序要搞清楚。最好是楼上所写的那样,在$(document).ready之后在执行。

可能是你引用的js中有的把$标识符覆盖了吧

prototype和Jquery一块用的话可能冲突,因为都用到了$运算符。

不用放到最后,把对 dom 对象的操作都话到 [code="Javascript"]$(document).ready(function(){ });[/code]
里面就行了

可能是$跟其他库的冲突了,改成
[code="java"]
jQuery(document).ready(function(){ });

[/code]
试试;
或者在代码的前面写上
[code="java"]
jQuery.noConflict();
[/code]