接着上节写.我们在工作中使用jquery的时候常常是这样开始的:
$(document).ready(function(){});
这样写的目的是让文档先加载,然后再开始执行ready.这和调用window.onload方法差不多,当然ready有些好处,比如速度快,会执行多个,不再赘述.我要说的是,它有个简写的方法:
$(function(){});
其实我人生中写的第一段jquery代码就是这样开头的,当时也没有太多的理解,最近看源码,才知道为什么可以这样写,源码大意如下,中间略去N多代码:
var rootjQuey = JQuery(docuemt); rootJQuery.ready = function(){ //具体实现很复杂以后再说 } // 这是我上节写的初始化函数 init(selector){ if(typeof selector == "function"){ return rootjQuery.ready( selector ) ; } }
所以$(function())实际是调用init(function()),那么返回的就是rootjQuery.ready(function()),也就是JQuery(doucment).ready(function()),即$(document).ready(function());
我这两节写的初始化函数都是init,而真正的源码的初始化函数是:
var JQuery = function(selector, context){ reutrn new JQuery.fn.init(selector, context); } // 通过初始化函数构建JQuery对象 var init = JQuery.fn.init = function(selector, context){ // N多代码... }
其中JQuery.fn = JQuery.prototype,也就是JQuery函数的原型对象,而我自己定义的是:
var MyJquery = function(selector){ // 把selector参数传入init中让它去初始化 return new init(selector); }; // 初始化函数,它负责处理传入的参数 var init = function(selector){ alert("传入的参数是"+selector); }
参数context先不说,源码比我多了个JQuery.fn.init();也就是把init()函数定义在了JQuery.fn(JQuery原型对象)上,这样做的好处是可以节省空间. 简单的理解就是:
直接定义init(),每个实例对象都会有一个init()方法.
通过原型对象定义init(),每个实例对象共享一个init()方法.
具体关于对象原型相关的知识,推荐<<javascript高级程序设计>>(我看的是第三版第六章面向对象的程序设计)
相关推荐
**jQuery工作流程步骤进度插件ystep详解** 在网页开发中,为了清晰地展示复杂的步骤流程,如用户注册、购物流程或者项目审批等,工作流程步骤进度插件显得尤为重要。ystep是一款基于jQuery的高效插件,它能帮助...
本教程旨在帮助初学者从零开始掌握jQuery的核心概念。 1. **选择器** jQuery的选择器类似于CSS,用于选取HTML元素。如`$("#id")`选取ID为指定值的元素,`$(".class")`选取具有特定类的元素,`$("tagname")`选取...
本教程“jQueryEasyUI从零开始学源码part1”旨在帮助初学者深入理解jQuery EasyUI的工作原理,通过源码分析来提升开发技能。 首先,我们需要了解jQuery EasyUI的基础概念。jQuery是一个轻量级的JavaScript库,简化...
然而,随着ES6等现代JavaScript特性的普及,一些开发者开始质疑是否还需要依赖jQuery。尽管如此,对于需要快速开发、维护大型项目或者需要兼容旧浏览器的场景,jQuery仍然具有不可替代的价值。因此,了解并熟练掌握...
- `从零开始学习jQuery.pdf` 和 `Learning+jquery中文版.pdf` 是两本完整的jQuery教程,它们从基础到高级全面讲解了jQuery的核心概念和技术,适合初学者系统学习。 - `15天学会jQuery` 可能是一个快速学习计划或...
在准备工作中,我们需要确保引入了jQuery和jQueryUI的库文件,可以通过CDN(如Google的CDN)或者本地服务器提供。在实际应用中,我们可以使用Dialog组件来创建弹出层,如静态提示、动态提示和遮罩效果的弹出框,...
《从零开始学JQuery》是一本非常适合初学者入门的jQuery教程,旨在帮助读者快速掌握这一强大的JavaScript库。jQuery简化了HTML文档遍历、事件处理、动画设计和Ajax交互等任务,使得网页开发更为便捷。在Word版书籍中...
jQuery LazyLoad 是一个jQuery插件,它的主要功能是在用户滚动页面到图片所在位置时才开始加载图片,而不是在页面初始加载时就一次性加载所有图片。这种方式大大减少了首次加载页面时的数据量,提高了页面的加载速度...
jQuery QueryLoader2是一款强大的JavaScript库,专为网页中的图片加载设计出优雅的加载动画效果。这个库是由Gerben Stoel开发的,它旨在提供一种跨浏览器的解决方案,以提升用户体验,尤其是在网页内容加载期间。...
《从零开始学习jQuery教程_c#.net版》是一份针对初学者设计的全面教程,旨在帮助没有基础的读者快速掌握jQuery这一强大的JavaScript库。jQuery简化了JavaScript中的DOM操作、事件处理、动画效果以及Ajax交互,使得...
### jQuery实战第二版知识点概述 #### 一、书籍基本信息与评价 - **书籍名称**:《jQuery实战第二版》(jQuery in Action, Second Edition) - **作者**:Bear Bibeault 和 Yehuda Katz - **出版商**:MANNING - **...
2. **《Jquery1.2.6源码分析.pdf》**:这本书籍或文章可能详细剖析了jQuery 1.2.6版本的源代码,帮助开发者理解jQuery的内部工作原理,包括如何优化性能、处理DOM操作、实现高效选择器等。通过源码分析,开发者可以...
2. **性能提升**:在2.x版本中,jQuery团队进行了大量的优化工作,使得库的运行速度比1.x系列更快,特别是在现代浏览器中。 3. **API变化**:一些不常用或者过时的方法在2.x版本中被移除,例如`$.browser`,鼓励...
2. **配置PDF.js**:PDF.js库需要一些配置才能工作。例如,设置默认的PDF文件URL,以及指定渲染PDF的容器元素。 ```javascript var pdfUrl = 'path/to/your/pdf/file.pdf'; var container = $('#pdf-container'); `...
2. **解决浏览器兼容性问题**:通过统一的事件对象处理,jQuery解决了不同浏览器间的兼容性问题。开发者无需针对每个浏览器编写特定的代码,大大减少了开发工作量。 3. **丰富的UI效果实现**:jQuery能够实现多种...
总的来说,jQuery.uploadify.js是一个强大的文件上传解决方案,它的兼容性增强使得它能够在各种浏览器环境中稳定工作,而与C#的结合则保证了服务端处理的灵活性。对于需要在多种浏览器环境下实现文件上传功能的Web...
1. **恢复已移除的API**: jQuery 1.9开始移除了部分不再推荐使用的API,如`.live()`, `.size()`, `.data()(处理原始值)`等。jQuery Migrate会重新引入这些方法,以便在升级过程中能正常运行依赖它们的代码。 2. *...
2. **jQuery 2.x系列**:从这个版本开始,jQuery放弃了对旧版IE的支持,从而可以更轻量级,更快地运行。如果你的项目不需要考虑旧版IE,那么2.x系列是一个不错的选择。 3. **jQuery 3.x系列**:这个版本引入了更多...