今天我在项目中用了一下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]