解读(function($){...})(jQuery)

function(arg){...}
这就定义了一个匿名函数,参数为arg

而调用函数 时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:
(function(arg){...})(param)
这 就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数

而(function($){...}) (jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery

**************************************************************************
其实就等于
var fn = function($){....};
fn(jQuery);

其实可以这么理解,不过要注意的是fn是不存在的
那个函数直接定义,然后就运行了。就“压缩”成下面的样子了
(function($){...})(jQuery) 
**************************************************************************
简单理解是(function($){...})(jQuery)用来定义一些需要预先定义好的函数
$(function(){ })则是用来在DOM加载完成之后运行\执行那些预行定义好的函数.
**************************************************************************

开发jQuery插件时总结的一些经验分享一下。 
一、先看

jQuery(function(){ 
}); 
全写为 
jQuery(document).ready(function(){

});

意义为在DOM加载完毕后执行了ready()方法。 
二、再看

(function(){

})(jQuery); 
其实际上是执行()(para)匿名方法,只不过是传递了jQuery对象。

三、总结

jQuery(function(){ });用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在。不可用于存放开发插件的代码,因 为jQuery对象没有得到传递,外部通过jQuery.method也调用不了其中的方法(函数)。 
(function(){ })(jQuery);用于存放开发插件的代码,执行其中代码时DOM不一定存在,所以直接自动执行DOM操作的代码 请小心使用。

时间: 2024-08-02 11:02:28

解读(function($){...})(jQuery)的相关文章

锋利的JS解读——认识JQuery(一)

一.jQuery的发展 随着javascript的不断发展,延伸出了多种JS程序库,当前比较流行的js库有:1)Prototype  成型较早,从整体上对面向对象的编程思想把握的不是很到位. 2)Dojo  学习曲线陡,文档不齐全,最严重的的是APE不稳定,每次升级都可能导致已有程序失效. 3)YUI  Yahoo公司出品,比较完善,编写规范. 4)Ext JS  原本是对YUI的扩展,主要用于构建前端用户界面,后期发展可以用来开发富有华丽外观的富客户端应用,商业用途并不免费.  5) MooT

ajax图片单个上传(ajaxfileupload.js)

开发过程中发现,页面总是只能存在一个图片,如果有两个图片,或者多个,就没法上传了.比较困惑怎么会有这样的事情呢? 知道今天开发完后我才测试了下,发现同一个页面单个上传N个图都是没有问题的. 下面是实例. http://files.cnblogs.com/bin-pureLife/ajaxupload.zip 发现我上面遇到的问题是不存在,另外看了下实现原理,是通过构造了一个不可见的iframe,然后在发送http请求达成的. 我项目中遇到这种问题的原因. 排查: 这是调用upload前的方法.

认识AJAX及函数使用

一.什么是AJAX Ajax(Asynchronous JavaScript and XML),可以理解为JavaScript执行异步网络请求.通俗的理解的话就是,如果没有Ajax技术,改变网页的一小部分(哪怕是一行文字.一张图片)都需要重新加载一次整个页面,而有了Ajax之后,就可以实现在网页不跳转不刷新的情况下,在网页后台提交数据,部分更新页面内容. 二.AJAX的原声写法 1.XMLHttpRequest对象 XMLHttpRequest 对象用于在后台与服务器交换数据,能够在不重新加载页

Ajax总结一下

一.什么是Ajax Ajax(Asynchronous JavaScript and XML),可以理解为JavaScript执行异步网络请求.通俗的理解的话就是,如果没有Ajax技术,改变网页的一小部分(哪怕是一行文字.一张图片)都需要重新加载一次整个页面,而有了Ajax之后,就可以实现在网页不跳转不刷新的情况下,在网页后台提交数据,部分更新页面内容. 二.Ajax的原生写法 1.XMLHttpRequest对象 XMLHttpRequest 对象用于在后台与服务器交换数据,能够在不重新加载页

jQuery源码解读第5章---对Callbacks的解读

jQuery.Callbacks() 是一个多用途的回调函数列表对象 提供了一种强大的方法来管理回调函数队列 先来看看Callbacks的常见的用法 1-------不带参数 先看看不用回调函数的例子 eq function a1(){ console.log('a1') } (function(){ function a2(){ console.log('a2') } })() a1() // a1 a2() //就不行了 这时候我们就可以使用回调函数Callbacks 了 var dfd1

jquery api的整体解读

最近做了几个网站的项目,比如 www.ya-jing.cn(配资公司) ,用到了jquery,那个slide 以及一些效果就是用到了jquery.索性研究了一下jquery,那么我觉得有必要对其进行一下整体的解读. 在解读jquery api之前,我们先必须清楚一个基础的概念,即jquery只是javascript众多库中突出的一个,虽然用jquery已经可以做出大多的网页特效,但并非可以做出所有的特效,要做出想达到的效果,我们还需要对javascript的语法,函数和对象有一些了解,这里的了解

js便签笔记(9)——解读jquery源码时记录的一些知识点

近来一直利用业余时间在看jquery2.1.1源码,大约看了两千行了.平时看的时候,做了一些笔记,贴出来分享. 1. Array.prototype.slice.call 可以将伪数组转化为真正的数组 其实,这里所谓的"伪数组"就是有length属性,并且有"0"."1"."2"等这些属性的对象,如下代码: var obj = { 0: "A", 1: "B", 2: "C&q

jQuery源码解读第4章---对extend的解读

为什么我们一开始就说extend呢 其实我读源码的过程中,发现其实我们方法就在源码中都调用了extend Callbacks Deferred这些工具方法 所以我们很有必要先学习这些,,,,,,,,,,,这样对我们后续的学习很有帮助 对extend的学习,,,,,首先看下extend我们平时是怎么用的 1...合并对象 extend(dest,src1,src2,,,,,) 它的含义就是将src1,src2......合并到dest中 然后放回的结果就是合并后的dest eq: var dest

jquery版本更新后无live函数的处理.TypeError: $(...).live is not a function

jquery live函数语法 jquery版本更新, 发现一个问题: jq自带的live没有了.控制台下会有如下的提示:火狐: TypeError: $(...).live is not a function chrome: Uncaught TypeError: Object [object Object] has no method 'live' 网上的一个说法: jQuery 1.9 较之前的版本做了很大的调整,很多函数都不被支持.例如 live(),die(),toggle(),sub