JQuery对象,非常重要的一个概念,类似于模拟代码中的JClass实例,通常是通过JQuery构造出的实例。在JQuery中,我们常常见到的JQuery对象是这样的: $('#id') 、$('div')等。关于JQuery对象我们要明白以下几点:
1、JQuery对象继承了JQuery原型(prototype)的所有属性和方法
2、JQuery对象不是数组,但是采用了类似数组的结构来存储元素,而且存储的元素是通过选择器获取得到的DOM对象。参照上面章节的模拟代码(JClass实例对象),JQuery对象有个length属性,表示当前对象里存储DOM对象的个数,而这些通过选择获得的DOM对象,是采用下标为0、1、2、3 ... 作为属性名来进行存储的。所以,根据以上特性,我们完全可以通过下面这种方式来访问元素:
var objs = $('div'); for(var i=0,len=objs.length;i<length;i++) { var o = objs[i]; //获取dom元素 ... ... }
综合来说,JQuery、JQuery对象、DOM对象三者之间的关系是: JQuery是个工厂方法,用来构造JQuery对象; JQuery对象是个类数组对象,里面存储了DOM对象;
理解了三者之间的关系,我们在理解下面知识点时,相对来说也就比较容易了:
关于过滤选择器如何理解? 如$('div:first') 。
如果理解了JQuery对象的内部结构,理解JQuery的过滤选择器就很容易了,如 :first 其实就是取JQuery对象属性为'0'的对象(封装成JQuery对象),同理 :last取的是属性为 length-1 的元素,:eq(index)取的是属性为index的元素。
在JQuery中,如何验证某个元素是否为空?
var $o = $('div .class'); if($ == null) { // 错误的做法 //什么都没找到 ...... } //正确的做法 if($o.html() == null) { //什么都没找到 ... ... } //正确的做法 if($o.length) { //什么都没找到 ... ... }
JQuery对象和DOM对象如何转换?
var dom = document.getElementById('id'); // DOM对象转换成JQuery对象 var $dom = $(dom); // 参照JQuery对象的构造方式 // 将JQuery对象转换成DOM对象 for(var i=0,len=$dom.length;i<length;i++) { var o = $dom[i]; //获取dom元素 ... ... }
总结
关于JQuery,上手虽然简单,但如果要高效快速的使用开发,还是需要好好理解下JQuery的。以上只是个人学习过程中的一些感悟和整理,建议各位在学习时也按照自己的思维习惯形成一套自己的知识体系,一来便于日后的开发,二来也便于查阅别人的代码。最后附注一些有意思的小问题,各位有兴趣就思考下吧。
问题一. 你觉得下面哪种方式代码好一点?为什么?
// 方式一 var $text = $("#text"); var $ts = $text.text(); //方式二 var $text = $("#text"); var $ts = $.text($text);
问题二. 下面代码中的this是什么呢?大概实现原理有什么?
全选复制放进笔记 $('#box').click(function(){ var obj = this; ... ... }
以上就是关于jquery原理以及学习技巧介绍,内容很充实,信息量很大,需要同学耐心学习,希望从中有所收获吧。