jQuery技术

Jquery中的(function($){...})(jQuery)

字号+ 作者:H5之家 来源:H5之家 2017-03-28 08:05 我要评论( )

当你第一 30524;看到(function($){ })(jQuery)的时候,你有什么感觉?呵呵呵,我当时还是止不住的从心底里骂了一句操,这他妈什么劳什子。时过境迁,对于现在无

> web前端 > JavaScript > 正文 Jquery中的(function($){...})(jQuery) 2014-07-30         来源:gaohuanjie的专栏      我要投稿

当你第一眼看到“(function($){...})(jQuery)”的时候,你有什么感觉?呵呵呵,我当时还是止不住的从心底里骂了一句——操,这他妈什么劳什子。时过境迁,对于现在无比倚重Jquery的我,自感当时的自己是那么的无知,今天忙里偷闲,解释一下究竟“(function($){...})(jQuery)”该怎样理解:

代码一:

说明:在浏览器中运行上面代码,会弹出一个对话框,对话框的内容为GaoHuanjie。

上面代码中执行的JavaScript脚本和“(function($){...})(jQuery)”是一样的,也就是说“(function($){...})(jQuery)”中的函数会自动被执行,那么究竟该怎样理解“(function($){...})(jQuery)”呢?“(function($){...})(jQuery)”实际上表示的是已处于调用状态的匿名函数:function($){...}是定义的匿名函数,参数为$(之所以将参数声明为$是为了不与其他库冲突);为了调用该函数则在该匿名函数的后面添上了括号和实参(这里为jQuery),但又由于操作符的优先级,函数本身也需要用括号,所以又为匿名函数添加了括号。
释疑解惑:

一、我运行下面代码为什么报错——jQuery is not defined:

嗯嗯,浏览器在解析上述js脚本时确实会出现问题,假如为jQuery添加英文双引号,再次使用浏览器运行上述脚本则不会出错,为什么不加就会出错呢,呵呵呵,其实这里的jQuery还是一个变量,如果为上述代码引入jQuery库,再次使用浏览器运行上述代码则不会出现问题:

【0分下载资源】

在引入jQuery库后之所以不会出错是因为jQuery库中定义了jQuery变量。

二、和$(function(){ })相比,(function($){...})(jQuery)的执行时机也是在网页DOM加载完毕后才执行吗?

不是的,比如如下例子:

上述例子在浏览器中运行的时候会报错,究其原因(function(){...})()函数的执行时机并不是在DOM加载完毕后才执行,而是随着页面自上而下来执行,如果将其改成如下代码则再次使用浏览器运行脚本则不会出现问题:
<script type="text/javascript"> (function(){ alert(document.getElementById("name").value); })(); </script>

一句话:“$(function(){ });”用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在;“(function(){})(jQuery);”用于存放开发插件的代码,执行其中代码时DOM不一定存在。

点击复制链接 与好友分享!回本站首页

相关TAG标签

上一篇:ASP.NET中使用JSON方便实现前台与后台的数据交换 下一篇:利用jquery的imgAreaSelect插件实现图片裁剪示例 相关文章 图文推荐

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 15个值得开发人员关注的jQuery开发技巧和心得免费下载

    15个值得开发人员关注的jQuery开发技巧和心得免费下载

    2017-03-28 14:01

  • jQuery使用方法

    jQuery使用方法

    2017-03-27 13:01

  • [Html5]jQuery Mobile 教程

    [Html5]jQuery Mobile 教程

    2017-03-27 13:00

  • jQuery分页插件

    jQuery分页插件

    2017-03-27 12:03

网友点评