jQuery 中 jQuery(function(){})与(function(){})(jQuery) 的区别及用法
query是优秀的Javascrīpt框架。我们现在来讨论下在 Jquery 中两个页面载入后执行的函数。
$(document).ready(function(){ // 在这里写你的代码... });
在DOM加载完成时运行的代码
可以简写成
jQuery(function(){ });
(function($) {})(jQuery)什么意思?
(function(){ })(jQuery);
其实际上是执行()(para)匿名方法,只不过是传递了jQuery对象。
相当于
function aa($){} aa(jQuery)
是初始化jquery对象的惯用方法.
通俗点说就是在页面DOM加载完成后(不包括图片下载完成)执行你需要的代码,由于不包括图片下载,所以比window.onload效率高.
不过这个东西,有的时候会使页面跳动,很多JQUERY插件都是在加载完成后,才改变样式的,页面会有跳动或闪动的感觉.比如ui.tab这个插件,页面元素一多,全部显示出来了,它才形成TAB,很晕的说
(function(){})();
立即执行函数;相当于先申明一个函数,声明完后直接调用;
如果参数如:
(function(str){alert(str)})("output"));
相当于:
function OutPutFun(str){alert(str);};OutPutFun("output");
总结:
1.
jQuery(function(){ });
用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在。不可用于存放开发插件的代码,因为jQuery对象没有得到传递,外部通过jQuery.method也调用不了其中的方法(函数)。
2.
(function(){ })(jQuery);
用于存放开发插件的代码,执行其中代码时DOM不一定存在,所以直接自动执行DOM操作的代码请小心使用。
开发插件的格式如下:
(function ($) { $.fn.test111 = function () { alert('test') } })(jQuery);
调用插件
$("#elementid").test111();
--------------------------------------------------------------------------------
(function($){...})(jQuery)实际上是匿名函数,不懂得朋友可以继续往下看。
这里实际上是匿名函数 function(arg){...} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即: (function(arg){...})(param) 这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数
而(function($){...})(jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery.
等同于 var fn = function($){....}; fn(jQuery);
(funtion(){})();立即执行函数;相当于先申明一个函数,声明完后直接调用;
如果参数如:
(funtion(str){alert(str)})("output"));相当于:funtion OutPutFun(str){alert(str);};OutPutFun("output");
通过上面的讲解来个案例一
1 (function ($) { 2 $.fn.test111 = function () { 3 alert('test') 4 } 5 })(jQuery);
相当于
funtion OutPutFun($){ $.fn.test111 = function () { alert('test') }}; OutPutFun(jQuery);
其中OutPutFun(jQuery)中的jQuery就是funtion OutPutFun($)中的$符号,意思是一样的。
用法就是$("#elementid").test111();
其中 $.fn.是固定的写法。
jQuery就是$("#elementid").test111();
通过上面的讲解来个案例二
(function ($) { $.fn.tips = function(options){ var defaults = { side:1, msg:'', color:'#FFF', bg:'#F00', time:2, x:0, y:0 } var options = $.extend(defaults, options); if (!options.msg||isNaN(options.side)) { throw new Error('params error'); } return this; }; })(jQuery);
用法
$("#dname").tips({ side:3, msg:'输入属性名', bg:'#AE81FF', time:2 });
讲解
其中:
options就是
side:3,
msg:'输入属性名',
bg:'#AE81FF',
time:2
这几个参数
至于 var options = $.extend(defaults, options);用法详细请见
jQuery 中 jQuery(function(){})与(function(){})(jQuery) 的区别及用法的更多相关文章
- jquery中,size()和length()方法有啥区别
jquery中,size()和length()方法有啥区别? size()是jQuery提供的函数,而length是属性(不带括号). jQuery提供的源代码是这样的: size: function ...
- jQuery中hover与mouseover和mouseout的区别分析
本文实例分析了jQuery中hover与mouseover和mouseout的区别.分享给大家供大家参考,具体如下: 以前一直以为在jquery中其实mouseover和mouseout两个事件等于h ...
- [转载]jQuery中的html,val,text区别
在jquery中 text() 返回目标元素所包含的所有文本内容,注意不包含html标签 alert($("#shuru").text()); 1 html() 返回目标元素所包含 ...
- jquery中$.get()提交和$.post()提交有区别
jquery中$.get()提交和$.post()提交有区别吗? 相同点:都是异步请求的方式来获取服务端的数据: 异同点: 1.请求方式不同:$.get() 方法使用GET方法来进行异步请求的.$.p ...
- ajax和springmvc的请求响应原理——深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法
1,四大重要部分: 请求链接 post请求和get请求 请求参数形式 响应内容形式 2,从springmvc的controller角度,controller能接收到请求的前提 请求链接必须对应 pos ...
- angularjs中provider,factory,service的区别和用法
angularjs中provider,factory,service的区别和用法 都能提供service,但是又有差别 service 第一次被注入时实例化,只实例化一次,整个应用的生命周期中是个单例 ...
- jquery中的$(document).ready(function(){})和$(window).load()比较
1.执行时间 window.onload()即jquery写法中的$(window).load(function(){})必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document). ...
- 转 Java中final、finally、finalize的区别与用法
Java中final.finally.finalize的区别与用法 1.简单区别:final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承.finally是异常处理语句结构 ...
- 深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法
当我们用javascript写ajax程序写得很“开心”的时候,突然有人告诉你有一种东西叫jquery,它会告诉你不直接和HttpRequest是多么的快乐,同时你再也不需要再烦恼纠结的ajax乱码问 ...
- Jquery中bind和live.one,delegate的区别
Jquery中绑定事件有三种方法:以click事件为例 (1)target.click(function(){}); (2)target.bind("click",function ...
随机推荐
- Uva 11077 Find the Permutations [置换群 DP]
题意: 给定$n$和$k$,问有多少排列交换$k$次能变成升序 $n \le 21$ $uva$貌似挂掉了$vjudge$上一直排队 从某个排列到$1,2,...,n$和从$1,2,...,n$到某个 ...
- PhpStorm的破解 汉化
以前一直习惯使用sublime,最近发现phpstorm比submit稍微更强大些,其很多插件都是直接可以使用,不需要另外去拓展了 其中的破解.汉化步骤就需要借助一些资源 (1)破解 安装完毕后,直接 ...
- MySQL创建用户与授权
一. 创建用户 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明: username:你将创建的用户名 host:指定该用户 ...
- 让linux 服务器网卡物理口不停闪烁
[root@DBSERVER51 ~]# ethtool -p eth0 此时就会看到对应的物理口一个灯在不停的闪烁,对了.这就是我们在系统看到的那个叫eth0的网卡了.就是这么简单.
- LVS的NAT模式测试
dir 分别配置ip eth0 :10.222.138.200 eth0:1 10.222.21.190 rs1 eth0 :10.222.138.201 rs2 eth0: 10.222.1 ...
- php提供的sapi有哪些?CGI、FastCGI、php-fpm、php-cgi解释
一.前言 一直对PHP的sapi是什么东西好奇,在网上一查都是各种说fpm cgi fastcgi php-cgi 直到看了鸟哥的这篇文章介绍戳这里,看到源码下的sapi目录才有所了解. 二.sapi ...
- ubuntu终端常用命令及solarized配色(护眼)
ubuntu终端常用命令及solarized配色(护眼) ubuntu 终端 命令 1.常用命令 ctrl + l - 清屏 . cLear ctrl + c - 终止命令. ctrl + d ...
- rxjs-流式编程
前言 第一次接触rxjs也是因为angular2应用,内置了rxjs的依赖,了解之后发现它的强大,是一个可以代替promise的框架,但是只处理promise的东西有点拿尚方宝剑砍蚊子的意思. 如果我 ...
- iOS中蓝牙的使用
Core Bluetooth的使用 1,建立中心设备 2,扫描外设(Discover Peripheral) 3,连接外设(Connect Peripheral) 4,扫描外设中的服务和特征(Disc ...
- 3.1 if 条件分支语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 获取条件语句的执行结果的过程就是真假值判断 #首先需要说明在Python中 #假值(False):0. ...