Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / jQuery中的(function($){...})(jQuery)

当你第一眼看到“(function($){...})(jQuery)”的时候,你有什么感觉?呵呵呵,我当时还是止不住的从心底里骂了一句,这他妈什么劳什子。时过境迁,对于现在无比倚重Jquery的我,自感当时的自己是那么的无知,今天忙里偷闲,解释一下究竟“(function($){...})(jQuery)”该怎样理解:代码一:<html>
 <head>
  <title>代码一</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <script type="text/javascript">
   (function(name){
    alert(name);
   })("GaoHuanjie");
  </script>
 </head>
 <body> </body>
</html>说明:在浏览器中运行上面代码,会弹出一个对话框,对话框的内容为GaoHuanjie。上面代码中执行的JavaScript脚本和“(function($){...})(jQuery)”是一样的,也就是说“(function($){...})(jQuery)”中的函数会自动被执行,那么究竟该怎样理解“(function($){...})(jQuery)”呢?“(function($){...})(jQuery)”实际上表示的是已处于调用状态的匿名函数:function($){...}是定义的匿名函数,参数为$(之所以将参数声明为$是为了不与其他库冲突);为了调用该函数则在该匿名函数的后面添上了括号和实参(这里为jQuery),但又由于操作符的优先级,函数本身也需要用括号,所以又为匿名函数添加了括号。释疑解惑:一、我运行下面代码为什么报错——jQuery is not defined:<html>
 <head>
  <title>代码二</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <script type="text/javascript">
   (function($){
    alert($);
   })(jQuery);
  </script>
 </head>
 <body> </body>
</html>嗯嗯,浏览器在解析上述js脚本时确实会出现问题,假如为jQuery添加英文双引号,再次使用浏览器运行上述脚本则不会出错,为什么不加就会出错呢,呵呵呵,其实这里的jQuery还是一个变量,如果为上述代码引入jQuery库,再次使用浏览器运行上述代码则不会出现问题:<html>
 <head>
  <title>代码三</title>
  <script type="text/javascript" src="./jquery-1.6.2.js"></script>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <script type="text/javascript">
   (function($){
    alert($);
   })(jQuery);
  </script>
 </head>
 <body> </body>
</html>本示例代码主要用于揭示Jquery中的(function($){...})(jQuery),欢迎下载。------------------------------------------分割线------------------------------------------免费下载地址在 http://linux.linuxidc.com/用户名与密码都是www.linuxidc.com具体下载目录在 /2014年资料/8月/12日/jQuery中的(function($){...})(jQuery)/下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm------------------------------------------分割线------------------------------------------在引入jQuery库后之所以不会出错是因为jQuery库中定义了jQuery变量。二、和$(function(){ })相比,(function($){...})(jQuery)的执行时机也是在网页DOM加载完毕后才执行吗?不是的,比如如下例子:<html>
 <head>
  <title>代码四</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <script type="text/javascript">
   (function(){
    alert(document.getElementById("name").value);
   })();
  </script>
 </head>
 <body>
  <input type="hidden" id="name" name="name" value="GaoHuanjie" />
 </body>
</html>上述例子在浏览器中运行的时候会报错,究其原因(function(){...})()函数的执行时机并不是在DOM加载完毕后才执行,而是随着页面自上而下来执行,如果将其改成如下代码则再次使用浏览器运行脚本则不会出现问题:<html>
 <head>
  <title>代码五</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 </head>
 <body>
  <input type="hidden" id="name" name="name" value="GaoHuanjie" />
  <script type="text/javascript">
   (function(){
    alert(document.getElementById("name").value);
   })();
  </script>
 </body>
</html>一句话:“$(function(){ });”用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在;“(function(){})(jQuery);”用于存放开发插件的代码,执行其中代码时DOM不一定存在。--------------------------------------分割线 --------------------------------------jQuery权威指南 PDF版中文+配套源代码 http://www.linuxidc.com/Linux/2013-10/91059.htmjQuery实战 中文PDF+源码 http://www.linuxidc.com/Linux/2013-09/90631.htm《jQuery即学即用(双色)》 PDF+源代码 http://www.linuxidc.com/Linux/2013-09/90383.htm锋利的jQuery(第2版) 完整版PDF+源码 http://www.linuxidc.com/Linux/2013-10/91527.htmjQuery完成带复选框的表格行高亮显示 http://www.linuxidc.com/Linux/2013-08/89406.htmjQuery基础教程(第4版) PDF 完整高清版+配套源码 http://www.linuxidc.com/Linux/2014-03/98162.htm--------------------------------------分割线 --------------------------------------jQuery 的详细介绍:请点这里
jQuery 的下载地址:请点这里本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-08/105462.htm