jQuery对象与dom对象的相互转化
刚开始学习jQuery,可能一时分不清那些事jQuery对象,哪些是DOM对象。至于DOM对象不多解释,我们接触的太多了,下面重点介绍一下jQuery,以及两者相互间的转换。
什么是jQuery对象?
就是通过jQuery包装DOM对象后产生的对象。jQuery对象是jQuery独有的,其可以使用jQuery里的方法。
比如:
$("#test").html() 意思是指:获取ID为test的元素内的html代码。其中html()是jQuery里的方法
等同于用DOM实现代码:
document.getElementById("id").innerHTML;
虽然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法. 乱使用会报错。
比如:
$("#test").innerHTML、document.getElementById("id").html()之类的写法都是错误的。
注意:用#id作为选择符取得的是jQuery对象与document.getElementById(“id”)得到的DOM对象,这两者并不等价。
既然jQuery有区别但也有联系,那么jQuery对象与DOM对象也可以相互转换。在再两者转换前首先我们给一个约定:如果一个获取的是 jQuery对象,那么我们在变量前面加上$,如:var $variab = jQuery对象;如果获取的是DOM对象,则与习惯普通一样:var variab = DOM对象;这么约定只是便于讲解与区别,实际使用中并不规定。
jQuery对象转化为DOM对象
方法一:利用数组下标的方式读取jQuery中的DOM对象
HTML代码:
<div>元素一</div>
<div>元素二</div>
<div>元素三</div>
javascript代码:
var $div =$('div'); //jQuery对象
var div = $div[0]; //转化为DOM对象
div.style.color = 'red' //操作DOM对象的属性
jQuery对象是一个数组结构,可以通过数组下标索引找到对应的div元素,通过返回的div对象调用它的style属性修改div元素的颜色。
方法二:通过jQuery自带的get()方法
jQuery对象自身提供一个.get()方法允许我们直接访问jQuery对象中相关的DOM节点,get方法中提供了一个元素的索引
var $div = $('div') //jQuery对象
var div = $div.get(0); //通过get方法,转化为DOM对象
div.style.color = 'red'; //操作DOM对象的属性
其实,jQuery源码中,get()方法就是利用数组下标的方式处理的,只不过jQuery把它包装程get方法更便于开发者使用。
DOM对象转化为jQuery对象
相比较jQuery对象转化为DOM对象,开发中更多的是把一个DOM对象加工成一个jQuery对象。$(参数)是一个对功能大方法,通过传递不同的参数而产生不同的作用,如果传递的参数是一个DOM对象,jQuery就可以把DOM对象包装转化为一个jQuery对象。
javascript代码:
var div = document.getElementsByTagName('div'); //DOM对象
var $div = $(div); //jQuery对象
var $first = $div.first(); //找到第一个div元素
$first.css('color','red');
通过getElementSByTagName()获取到所有的div节点的元素,结果是一个DOM合集对象,这个对象是一个数组合集,通过$(div)方法转化为jQuery对象,再调用jQuery对象中的first和css方法查找对应的元素并改变其颜色。