Query对象和DOM对象的相互转换 转贴

Query对象和DOM对象的相互转换

作者:[email protected]
日期:2012-01-04


jQuery对象是jQuery库封装DOM对象而成的javascript对象,是jQuery库特有的。jQuery对象可以有其对应的DOM对象,但是与其DOM对象有很大的区别。

jQuery对象可以使用jQuery库的任何方法,而不能使用相应DOM对象的任何方法。当然DOM对象也不能使用jQuery库里的方法。例如:

$("#foo").html(); // 获取id为foo的元素内的html代码。html()是jQuery里的方法。

这段代码等同于:

document.getElementById("foo").innerHTML;

所以,二者是不可以混用的,更不能混用其方法。

定义变量风格

从上面可以看出:作为jQuery的使用者,必须时刻清醒自己使用的是jQuery对象还是DOM对象。为此,通常约定好下面的变量定义风格:

var $variable = jQuery对象; // jQuery变量名通常以$开头。
var variable = DOM对象; // DOM对象的变量名别用$开头。

DOM对象转换成jQuery对象

二者是可以相互转换的。

假定网页中有个checkbox标签:

<input type="checkbox" id="chk1" />

下面代码是普通DOM对象操作方法,chk1就是那个checkbox的DOM对象。

alert(chk1.checked);

那么如何把它转换成jQuery对象呢?只需要用$()把DOM对象包起来,就可以获得其对应的jQuery对象了。示例代码如下:

var $chk1 = $("#chk1"); // 用$("#id")把DOM对象包装起来就获得其对应的jQuery对象
    alert($chk1.is(":checked")); // 等同于:alert(chk1.checked);

上面代码中$()函数的参数是CSS的ID选择器(jQuery选择器完全继承了CSS选择器),下面这段代码中则是javascript对象变量:

var chk2 = document.getDocumentById("chk1");
    var $chk2 = $(chk2);
    alert($chk2.is(":checked")); // 等同于:alert(chk2.checked);

jQuery对象转换成DOM对象

jQuery提供了两种方法可以将jQuery对象转换成DOM对象,即[index]和get(index)。

第一种方法:
jQuery对象是一个数组对象,可以通过[index]的方法得到其相应的DOM对象。示例代码如下:

var $chk1 = $("chk1"); // 获得chk1的jQuery对象
    var chk1 = $chk1[0]; // 从jQuery对象获得其相应DOM对象        
    alert(chk1.checked);

第二种方法:
jQuery提供了get(index)方法可以得到相应的DOM对象。示例代码如下:

var $chk1 = $("chk1"); // 获得chk1的jQuery对象
    var chk1 = $chk1.get(0); // 从jQuery对象获得其相应DOM对象        
    alert(chk1.checked);

最后:在大多数时候,编码用到的jQuery对象都是通过$()函数制造出来的,$()函数就是一个jQuery对象的制造工厂。

相关推荐