---恢复内容开始---
JQuery $未定义
(2012-07-23 15:14:45)
标签:
杂谈 |
分类: javaEE |
jquery是Yii集成的,利用jquery写的代码
$(document).ready(function(){
// 操作列表
$(‘.operate‘).mouseover(function() {
$(‘#operate-‘+$(this).attr(‘key‘)).show();
}).mouseout(function() {
$(‘#operate-‘+$(this).attr(‘key‘)).hide();
});
$(‘.toggle-btn a,.delete-a‘).live(‘click‘,function() {
var str = $(this).html();
var vid = $(‘.grid-view‘).attr(‘id‘);
if(!confirm(‘确定要‘+str+‘吗?‘)) return false;
var th=this;
var afterDelete=function(){};
$.fn.yiiGridView.update(vid, {
type:‘POST‘,
url:$(this).attr(‘href‘),
success:function(data) {
$.fn.yiiGridView.update(vid);
afterDelete(th,true,data);
},
error:function(XHR) {
return afterDelete(th,false,XHR);
}
});
return false;
});
第九行说我“$”未定义。。不明白原因
满意回答
(function($){ $(document).ready(function(){ ......... })(jQuery); 防止$在命名空间上有冲突,可以用这样的方式书写。
追问
能给出一个冲突的例子不!谢谢了。。
回答
<script src="jquery.js"></script> <script> var $ = function(id){return document.getElementByIdx_x(id)}; //or function $(id){return document.getElementByIdx_x(id)} //or <script src="else js Yii.js"></script> $(document).ready(function(){ ...... }); </script> 上面的就是有命名冲突了,下面的就没有问题: (function($){ $.......//函数里面所有的$都是jQuery })(jQuery); //意思是有1个参数的函数并且执行这个参数为jQuery的函数 (function(){***})();一个函数,并且执行这个函数 function(){***}只是定义,没有执行
刚学习JQuery,按照视频所讲的编写Html文件,完成后用IE9调试显示$符号找不到,$未定义,于是乎我就上网查询出现这种问题的原因,网上无非是说,JS文件引用不对,或者是Html文件的设置编码格式不正确,我仔细的检查了一下Html文件,不没有编码格式设置为UTF-8应该没有问题,因为在FF或IE上测试并没有出现乱码的问题,接下来测试文件引用是不是正确,我把自己编写的JS代码直接放在Html文件里,测试了一下也没有问题啊。这就郁闷了,究竟是啥问题呢?网上说的问题我也没有出现啊,调试了一段时间,看了一下时间不早了,还是睡觉吧,第二天还得上班呢?
第二天,做完手头上的工作,想起昨天遇到的问题,于是我又上网查询了一下,无意间看到一句话。自己编写的JS文件如果想要调用JQuery文件里的函数,JQuery文件引用要放在自己编写JS文件引用位置的前面。是不是自己编写的JS文件引用位置放的不对,这个很有可能。晚上会到寝室看了一下确实是我把JQuery文化引用位置放到了自己编写JS文件的后边。换了一下它们的位置,果然测试正确。由此有以下几点小感触:
1、问题解决不了时不要纠结于一时,放下了有可能你所需要的答案很可能就来了。
2、遇到不懂的问题上网查询是很好的一种学习方法,但没有经过深思熟虑的思考遇到问题就上网去找答案却不是一种好的学习方法。有一句话说的好,尽信书不如无书,网络也如此,尽信网不如无网。没有经过思考就上网查询,很容易被网上的一些说法所误导,让你离自己问题的最佳解决方案渐行渐远,况且网上的很多答案都差不多,那样的话找到自己所需要的答案可就越来越远了。
3、扎实的专业知识很重要。以前在工作中遇到一些不能解决的问题,总喜欢上网查询,可是有时候上网查询未必就能找到你想要的答案,毕竟具体问题具体分析嘛。这时候答案一般是自己想出来的而不是从网上找到的,可见这时候就体现出你所掌握专业知识的重要性了。由此可知,网上提供的答案只是给你提供了一种解决思路,具体怎么解决,还得靠自己的专业知识和深思熟虑才能真正找到。
---恢复内容结束---