`
stworthy
  • 浏览: 522794 次
  • 来自: ...
社区版块
存档分类
最新评论

理解jQuery对象

阅读更多

学习JQuery时对$(...)操作后返回的jQuery对象具有如此灵活的操作方法感到惊讶,阅读JQuery源码后逐步明白一些道理。

下面仿照JQuery构造一个超简单的框架,以说明对JQuery的理解。

 

var jQuery = $ = function(selector){
	return new jQuery.fn.init(selector);
};

使用jQuery(...)和$是一样的,都是返回一个对象,这个对象是由jQuery.fn.init的构造体构造的,这个对象有什么来头呢 ?

jQuery.fn = jQuery.prototype = {
	init:function(selector){
		var elem = document.getElementById(selector);
		this[0] = elem;
		this.length = 1;
		return this;
	},
	each:function(method){
		for(var i=0; i<this.length; i++){
			method.call(this[i],i);
		}
		
	}
};

可见,返回的是一个数组,所以并没有什么神秘的东西。

但这个数组还不能进行each的操作,需要扩展其原型方法,下面的这句很重要:

jQuery.fn.init.prototype = jQuery.fn;

这样,通过$(...)得到的对象就能进行each调用了。

 

下面测试一下:

	<div id="myid">测试内容</div>
	<script>
		$('myid').each(function(i){
			alert(i+":"+this.id+":"+this.innerHTML);
		});
	</script>

确实可以运行,运行结果如下图:

 

 

  • 大小: 5.9 KB
分享到:
评论
2 楼 bellstar 2008-10-26  
就以上代码来看$(“id”),操作后返回的很明显不是数组,而是一个Object,this[0]只是表明当前对象拥有0这个属性,this.length=1更是表明它不是数组,数组它是会自动给它的length属性计数的,没有必要手动设置值。typeof($("id"))看下吧



1 楼 ayumike 2008-10-25  
this[0] = elem;  
this.length = 1;
这个this 是指的jQuery这个对象吗?

下面的this.id是指的DIV这个对象吗?

这2个this 我不太明白 希望可以告诉我下...

$(this).attr()这个this应该是jQuery的自己对象吧

希望能帮我解释下 谢谢啊~~

相关推荐

    关于dom和jquery对象理解

    关于dom和jquery对象理解

    jQuery 对象和函数列表

    这里是我从Jquery中整理出来的一些对象和函数的用法,加上我自己的一些理解,和各位分享一下

    2014-10-04-深入理解jQuery(1)——jQuery对象1

    jQuery.fn = jQuery.prototype = {jquery: core_version,init: function(selector, co

    JQuery入门,JQuery总结

    jQuery的主要功能包括选取、操作和隐藏HTML元素,以及使用jQuery对象和函数。 在开始学习jQuery之前,我们需要理解为什么要学习jQuery。在使用原生JavaScript开发过程中,存在许多问题,如查找元素的方法单一、遍历...

    02-Jquery对象与JS对象的相互转换.mp4

    有html,css,js基础的可以看看,讲的不好多多理解

    jQuery权威指南-源代码

    书名:jQuery权威指南(系统介绍jQuery方方面面,囊括118个实例和2个综合案例,实战性强) 作者:陶国荣 著 ...10.8.2 DOM对象与jQuery对象的类型转换/335 10.9 本章小结/337 第11章 综合案例开发...

    Jquery对象和Dom对象的区别分析

    最近有小伙伴咨询Jquery对象和Dom对象的区别,今天我们谈谈个人对于Jquery对象和Dom对象的区别的理解,如有遗漏或者错误还请指出。

    jquery插件使用方法大全

    使一个Dom对象成为一个Jquery对象很简单,通过下面一些方式(只是一部分): 代码 var a = $("#cid"); var b = $("&lt;p&gt;hello&lt;/p&gt;"); var c = document.createElement("table"); var tb = $(c); 编辑本段代替body...

    jquery基础1

    juery1)掌握JSON及其应用 2)了解jQuery的背景和特点 3)理解js对象和jQuery对象的区别 4)掌握jQuery九类选择器及应用(上)

    jquery1.9.1中文版

    //jQuery对象是实际上初始化名为enhanced(提高的)构造器 //jQuery对象实际上只是增强的初始化构造方法 return new jQuery.fn.init( selector, context, rootjQuery ); }, /* 用来匹配数字的正则,匹配可选正负号...

    jQuery技术内幕:深入解析jQuery架构设计与实现原理

     如何阅读本书 本书共分为四大部分,首先介绍了jQuery的总体架构,然后分别分析了构造jQuery对象模块、底层支持模块和功能模块的源码实现。在阅读本书时,首先建议读者建立一个源码阅读和调试环境,在阅读过程中...

    jQuery-source-code:jQuery源码学习

    jQuery对象是一个类类别的对象,包含连续的整型属性,长度属性和大量的jQuery方法。jQuery对象由构造函数jQuery()创建, $()则是jQuery()的缩写。 构造函数jQuery() jQuery构造函数的总体结构 构造函数jQuery...

    jQuery压缩版和未压缩版

    包含jQuery压缩版和未压缩版,方便使用和学习,使你更加深入理解JavaScript对象 ,函数,原型,原型链等

    深入理解jquery中extend的实现

    extend()是jQuery中一个重要的函数,作用是实现对对象的扩展, 它经常用于jQuery插件的开发,jQuery内部也使用它来扩展属性方法,如noConflict方法,就是用extend方法来扩展的。下面来一起深入的再学习下jquery中...

    深入理解jQuery()方法的构建原理

    虽然JQuery相对简单,但要全面掌握,且快速灵活的使用它也并不那么容易,它提供了很多方法,包含了网页开发的各个知识面,所以要全面掌握这些知识点,个人认为还是需要对jquery有深入的理解,对这些知识点做分类整理...

    jquery1.9.1中文汉化版

    //对根jQuery对象的主要引用 rootjQuery, //支持:IE9之前的版本 // For `typeof node.method` instead of `node.method !== undefined` core_strundefined = typeof undefined, // Use the correct ...

    jquery-1.1.3 效率提高800%

    要查看高级抽象,见$.set、$.post等,这些方法更易于理解和使用。但是功能上有限制(例如,没有错误处理函数)。 警告:如果数据类型指定为"script",那么POST自动转化为GET方法。(因为script会作为一个嵌入页面的...

    jQuery插件开发全解析

    jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法。下面就两种函数的开发做详细的说明。 1、类级别的插件开发 类级别的插件开发最直接的理解就是给jQuery类添加...

    jQuery基础教程(第四版)

    不仅包括创建自己的实用函数,还有添加jQuery对象方法,以及使用jQuery UI部件工厂。接下来的几章更加深入地探讨了jQuery的各种特性,在这几章里将学习到很多高级的技术。 第9章重温关于选择符和遍历的知识,讲解了...

    深入理解jquery的$.extend()、$.fn和$.fn.extend()

    下面小编就为大家带来一篇深入理解jquery的$.extend()、$.fn和$.fn.extend()。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Global site tag (gtag.js) - Google Analytics