我对JQuery有一个非常奇怪的问题,它关于文档准备就绪时JQuery代码的启动,因为我知道使用方法$(function(){//CODE});
,(function($)(){//CODE}(JQuery)
或{{}之一没有区别1}}。
就像What is the difference between $(document).ready(function() and $(function() ?
上所说的那样所以我总是喜欢使用$(document).ready(function(){//CODE});
方法,但是当我在某些页面中使用此方法运行良好时,但在另一个页面中我遇到了错误,例如,如果我使用$(function(){//CODE});
或$.fn.extend
,我会得到'$ .fn is undefined'问题,尝试使用$.browser.msie
并且该错误消失了,我只是想知道为什么会发生这种情况,并且如果每种方法之间存在差异,那么确实存在!
答案 0 :(得分:2)
违规页面中的javascript导入可能正在重新定义$
变量。此变量不再引用jQuery
,因此错误。使用(function($)(){//CODE}(JQuery)
构造时,创建一个闭包,其中$
变量再次绑定到jQuery对象,并且在此闭包内一切顺利。
避免出现问题的另一种方法是始终使用jQuery
代替$
。示例:jQuery(function(){//CODE});
答案 1 :(得分:0)
看起来当您收到错误时,您已设置jQuery.noConflict
(或有人)。
$
只是jQuery
的别名 - 其他框架也使用它。
使用$(function(){code})
..或.. jQuery(function(){code})