刚才看到一问题“(function($){})(jQuery); 是什么意思,jQuery的插件常常可以见到,后面的jQuery去掉的话就出错了~~~;一直不理解,麻烦解答~~~~”,想回答,但是密码总是不对,还是放到豆瓣来了。
在web开发中可能会同时使用多个javascript库。除了jQuery之外,其他javascript也可能会使用$别名来创建对象。
若要确保jQuery不会与其他库的$对象发生冲突,可以通过运行noConflict函数将变量$的控制权让渡给第一个实现它的那个javascript库。
jQuery.noConflict();
那如何恢复在jQuery中使用别名$呢?
方法是创建并执行一个函数,在这个函数的作用域中仍将$作为jQuery的别名来使用。
具体代码如下:
jQuery.noConflict();
(function($){
$(function(){
//使用$作为jQuery别名的代码
});
})(jQuery);
//所以最后面的(jQuery)不能去掉,去掉的话,代码里面的$可能会成为其他js库的别名。
实际执行:
(funtion(){})();
立即执行函数;
相当于先申明一个函数,声明完后直接调用;
如果参数如:
(funtion(str){alert(str)})("output"));
相当于:
funtion OutPutFun(str){alert(str);};
OutPutFun("output");
$(function(){
});
})(jQuery);
相当于:function fun($){…};fun(jQuery);
这种方法多用于存放开发的插件,执行其中的代码时,Dom对象并不一定加载完毕。于此相反的是$(function(){}),这种方法在使用时页面的Dom对象已经加载完毕了。事实上该方法的全写是:$(document).ready(function(){});