(function ($) { $.foo = { name: 'dog', getName: function () { alert("hello:"+$.foo.name); }, run: function (n) { alert($.foo.name+" run " + n+" m"); } }; $(function () { $.foo.getName(); $.foo.run(33); }); })(jQuery); |
jQuery的文档就绪函数:
1 |
- $(document).ready(function(){
- --- jQuery functions go here ----
- });
1 |
$(function(){…}); 也可以写作 jQuery(function($) {…}); , 其实就是$(document).ready(function{...}); 的简写。
1 |
- jQuery(function(){
- });
1 |
or
1 |
- $(function(){
- });
1 |
这是为了防止文档在完全加载(就绪)之前运行 jQuery 代码。
如果在文档没有完全加载之前就运行函数,操作可能失败。下面是两个具体的例子:
- 试图隐藏一个不存在的元素
- 获得未完全加载的图像的大小
$(document).ready() 和JavaScript window.onload的区别:
两者都是指页面加载完成后,执行函数里的内容, $(document).ready() 是指DOM加载完成后就可以执行,JavaScript window.onload 不仅仅指DOM加载完成,还包括图片等外部资源完全加载后才能执行。
区别:
window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行,$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕
window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个,$(document).ready()可以同时编写多个,并且都可以得到执行
window.onload没有简化写法,$(document).ready(function(){})可以简写成$(function(){})
(function($) {})(jQuery)
1 2 | (function(){ })(jQuery); |
其实际上是执行()(para)匿名方法,只不过是传递了jQuery对象。
相当于
1 2 | function aa($){} aa(jQuery) |
是初始化jquery对象的惯用方法.
通俗点说就是在页面DOM加载完成后(不包括图片下载完成)执行你需要的代码,由于不包括图片下载,所以比window.onload效率高.
不过这个东西,有的时候会使页面跳动,很多JQUERY插件都是在加载完成后,才改变样式的,页面会有跳动或闪动的感觉.比如ui.tab这个插件,页面元素一多,全部显示出来了,它才形成TAB,很晕的说
1 | (function(){})(); |
立即执行函数;相当于先申明一个函数,声明完后直接调用; 如果参数如:
1 | (function(str){alert(str)})("output")); |
相当于:
1 | function OutPutFun(str){alert(str);};OutPutFun("output"); |
总结:
1. $(function(){ }) 或 jQuery(function(){ })
此函数也可以写成 jQuery(function(){ }), 用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在。不可用于存放开发插件的代码,因为jQuery对象没有得到传递,外部通过jQuery.method也调用不了其中的方法(函数)。
2.(function($){...})() 或 (function($){...})(jQuery)
此函数也可以写成(function(){ })(jQuery);其实际上是执行()(para)匿名方法,只不过是传递了jQuery对象。用于存放开发插件的代码,执行其中代码时DOM不一定存在,所以若要直接自动执行DOM操作的代码请小心使用。它相当于:
function wido($){} ; wisdo(jQuery), 是初始化jquery对象的惯用方法.
3. (function(){})() 或 (function(){ })(jQuery)
可以理解为闭包,是一个匿名方法的调用,以保证方法内的变量不与外界冲突,它等效于匿名函数 function(arg){...} ,参数为 arg,是初始化jquery对象的惯用方法,有的时候会使页面跳动, 在调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即: (function(arg){...})(param),这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数,而(function($){...})(jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery,
例如:
(funtion(str){alert(str)})("output"));
相当于:
funtion OutPutFun(str){alert(str);};
OutPutFun("output");
标签:JQuery,function,封装,函数,DOM,对象,str,jQuery,加载 From: https://www.cnblogs.com/telwanggs/p/17149096.html