(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操作的代码 请小心使用。

参考:http://blog.csdn.net/rambo_china/article/details/7742321

时间: 2024-10-27 01:12:51

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

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

jQuery 1.9 .live() is not a function

jquery中的live()方法在jquery1.9及以上的版本中已被废弃了,如果使用,会抛出TypeError: $(...).live is not a function错误. 解决方法: 之前的用法: .live(events, function) 新方法: .on(eventType, selector, function) 若selector不需要,可传入null 例子1: 之前: $('#mainmenu a').live('click', function) 之后: $('#mai

Jquery中的事件绑定$("#btn").bind("click",function(){ })

Jquery中的事件绑定:$("#btn").bind("click",function(){  }) 因为每次都这么调用太麻烦,所以jquery就用$("#btn").click(function(){})来进行简化 Jquery中的事件绑定$("#btn").bind("click",function(){ })

JQuery排错关于$(document).ready(function(){});

最近写了好多JQuery.也出了很多问题.不知道怎么回事.程序就不往下执行了.很是郁闷. 查了下资料,这里可能会有以下几种原因:1.js文件的引用路径不正确,特别是使用了命名空间,容易造成路径错误,使用绝对路径看是否成功.2.看 $(document).ready(function(){}); 是否会执行.3.$选择器所选的内容是否存在.排查很简单,请使用调试工具,如Firebug,查看console面板,就会把错误信息展现出来的. 这是我遇到的错误: jQuery,js : missing)a

jQuery中$(function(){})

jQuery中$(function(){})与(function($){})(jQuery).$(document).ready(function(){})等的区别详细讲解:http://blog.csdn.net/szwangdf/article/details/43153077

jQuery Raion, Select, CheckBox selector function

Radio jQuery("input[type=checkbox][name='fbCqscsf.cqzdycqk']").not("[value=1]").attr("checked","");var item = $('input[@name=items][@checked]').val();$("input[@type=radio]").attr("checked",'2');

JQuery中xxx is not a function或者can not find $

在项目中,遇到以上两个错误,反复折腾了好久,js代码写得没有问题,jquery的文件也引入了,就是反复的报告错误,xxx is not a function.如图: 就是这样的错误,shake is not a function,我也是日了狗了,shake明明是我在其他的js的文件中,拓展的Jquery的方法,怎么就不是function了,顺手超链接:Jquery实现抖动效果 后来我找到了这篇文章:$ is not defined error 在评论区找到了,解决问题的答案: 是引入js文件次序

seajs加载jquery提示$ is not a function

jquery1.7以上的都支持模块化加载,只是jquery默认的是支持amd,不支持cmd.所以要用seajs加载jquery,需要稍微改下jquery 把 1 if (typeof define === "function" && (define.amd)) { 2 define( "jquery", [], function() { 3 return jQuery; 4 }); 5 } 改成 1 if (typeof define === &qu

解决sea.js引用jQuery提示$ is not a function的问题

在使用sea.js的如下写法引用jQuery文件时, //main.jsdefine(function(require,exports,module){ var $ = require('jquery-3.1.0.min'); $('#name').html('helloworld'); }) 会报错,提示$ is not a function: 原因在于jQuery是默认支持AMD规范的,而sea.js是遵循CMD规范进行加载:这两种规范对外提供模块时的定义方法不一样: // CMD defi

JQuery:$(...).ajaxSubmit is not a function

用jquery写表单回调的时候报的bug 正如stackover上说的 I'm guessing you don't have a jquery form plugin included. ajaxSubmit isn't a core jquery function, I believe. 意思就是说表单提交是单独的一个插件,没集成在jquery-版本号.min.js这个文件里,需要另外引入jquery-form.js,文件名自取.现在找到的官方最新的form插件代码: /*! * jQuer