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 ...
随机推荐
- BZOJ 2959: 长跑 [lct 双连通分量 并查集]
2959: 长跑 题意:字词加入边,修改点权,询问两点间走一条路径的最大点权和.不一定是树 不是树
- VUE 2.0 引入高德地图,自行封装组件
1. 高德地图官网 申请帐号, 申请相应(JavaScript API)的 Key 2. 在项目中引入, 这里和其他的引入不同的是 直接在 index.html, 不是在 main.js 引入, 博主 ...
- win2012 配置wamp的若干错误
转自群友 VC2015.VC14 在 Windows 2012 R2 安装失败,0x80240017 - 未指定的错误,解决办法据朋友反应VC2013一样存在这个问题--查资料说是没有安装 KB299 ...
- win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程
操作系统:Microsoft Windows 7 旗舰版(32位) 数据库版本:SQL Server 2005 简体中文开发板 数据库下载链接: https://pan.baidu.com/s/1cq ...
- ansible实践-1
不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook 支持sudo 有提供UI(浏览器图形化)www.ans ...
- win7本地连接消失
可能原因一 驱动程序错误: 右键"计算机"图标 - "属性" - 设备管理器现在在设备管理器下面找到"网络适配器",在下面的网卡驱动中发现有 ...
- python3基础入门-知识点简记
1.基础语法 编码.标识符.保留字.注释.行与缩进... 2.变量类型 (1)Python3有6个标准的数据类型: Numbers(数字) 数字数据类型用于存储数值 不可改变的数据类型 可细分为 ...
- 案例分析——BAT业务https化经历
一.前言 通常的http访问会遭到中间人攻击.网络嗅探等普通用户感知不到的恶意行为,这些行为会篡改用户浏览页面引导用户访问非法网站.抓取用户的上网行为以及个人信息.严重的会造成用户 ...
- npm注意事项(附带Vue-cli安装)
下载完nodeJS后,可选择更改配置目录 1.npm config set prefix "D:\node\node-global"<!--配置全局安装目录--> 2. ...
- solr6.6教程-从mysql数据库中导入数据(三)
整理多半天的solr6.6,终于算是把solr6.6中配置数据库弄出来了,网上的文章千篇一律,各说个的,没有一篇统一覆盖solr6.6版本配置的 帖子,本章节我会把配置的一些注意事项一一列举,由于时间 ...