jQuery对象和DOM的相互转换
jQuery对象和DOM的相互转换什么是jQuery对象?
---就是通过jQuery包装DOM对象后产生的对象。jQuery对象是jQuery独有的,其可以使用jQuery里的方法。
比如:
$("#test").html() 意思是指:获取ID为test的元素内的html代码。其中html()是jQuery里的方法
这段代码等同于用DOM实现代码:
document.getElementByIdx_x("id").innerHTML; |
虽然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法.乱使用会报错。
比如:$("#test").innerHTML、document.getElementByIdx_x("id").html()之类的写法都是错误的。
jQuery对象和DOM对象是可以相互转换的,因为它们所操作的对象都是DOM元素,只不过jQuery对象包含了多个DOM元素,而DOM对象本身就是一个DOM元素。简单地说,jQuery对象是DOM元素的数组,也称为类数组,而DOM对象就是单个的DOM元素。
jQuery对象转成DOM对象
jQuery对象不能使用DOM中的方法,但是如果对jQuery对象所提供的方法不熟悉,或者jQuery没有封装想要的方法,不得不实用DOM对象的时候,就需要将jQuery对象转换为DOM对象。
转换的方法有以下两种。
第一,借助数组下标来读取jQuery对象集合中的某个DOM元素对象。例如,在下面的示例中,先使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第一个DOM元素,此时再返回的是DOM对象。这时就可以调用DOM属性innerHTML了。
例如:
<script type="text/javascript" >
$(function(){
var $li = $("li"); //返回jQuery对象
var li =$li[0]; //返回DOM对象
alert(li.innerHTML);
})
</script>
<ul>
<li>列表1</li>
<li>列表2</li>
<li>列表3</li>
</ul>
第二,借助jQuery对象的get()方法。为get()方法传递一个下标值,即可从jQuery对象中取出一个DOM对象元素。例如,上面示例可以改写为下面的方法。
<script type="text/javascript" >
$(function(){
var $li = $("li"); //返回jQuery对象
var li =$li.get(0); //返回DOM对象
alert(li.innerHTML);
})
</script>
把DOM对象转换为jQuery对象
对于一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了,然后它就可以自由调用jQuery定义的方法,方式为$(DOM对象)。
例如
<script type="text/javascript" >
$(function(){
var li = document.getElementsByTagName("li"); //获取所有li元素
var $li = $(li[0]); //把第一个li元素封装为jQuery对象
alert($li.html()); //调用jQuery对象的方法
})
</script>
<ul>
<li>列表1</li>
<li>列表2</li>
<li>列表3</li>
</ul>