$(function(){});,(function($)(){}(JQuery);和$(document).ready(function(){});有什么不同吗?

时间:2011-11-23 09:20:05

标签: jquery

我对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并且该错误消失了,我只是想知道为什么会发生这种情况,并且如果每种方法之间存在差异,那么确实存在!

2 个答案:

答案 0 :(得分:2)

违规页面中的javascript导入可能正在重新定义$变量。此变量不再引用jQuery,因此错误。使用(function($)(){//CODE}(JQuery)构造时,创建一个闭包,其中$变量再次绑定到jQuery对象,并且在此闭包内一切顺利。

避免出现问题的另一种方法是始终使用jQuery代替$。示例:jQuery(function(){//CODE});

答案 1 :(得分:0)

看起来当您收到错误时,您已设置jQuery.noConflict(或有人)。

$只是jQuery的别名 - 其他框架也使用它。

使用$(function(){code}) ..或.. jQuery(function(){code})

应该没问题