JQUERY 对象与DOM对象之两者相互间的转换


Posted in Javascript onApril 27, 2009

刚开始学习jQuery,可能一时会分不清楚哪些是jQuery对象,哪些是DOM对象。至于DOM对象不多解释,我们接触的太多了,下面重点介绍一下jQuery,以及两者相互间的转换

这几天会将jQuery的一些使用方法总结一下,希望能对jQuery初学者起到一定的帮助作用。

今天主要看看jQuery对象和dom对象的相互转换,明白了这个,以后用起jQuery会方便很多。

1、方法名冲突的解决办法 在开始使用jQuery时,我们首先应该避免jQuery与其他类库或自定义js的冲突。 先看一段最简单的代码:

jQuery(document).ready(function() {

    alert("Welcome!");

});

在这里没有使用$(document)这种写法,因为很多时候我们自己定义了$(id)方法用来获得元素,并且在prototype等类库中也定义了$()方法。所以,为了避免冲突,建议大家也使用jQuery("#id")这种写法。

2、jQuery对象与dom对象的相互转换 jQuery对象转dom对象: jQuery("#id")获得的是一个jQuery对象,它和普通的dom对象是不同的,所以不能直接使用dom对象定义的方法。由于jQuery对象本身就是一个集合,所以可以通过索引将jQuery对象转换成dom对象,如jQuery("#id")[0]就是一个dom对象。 看下边一个例子:

<div id="show">

    <span>要显示的内容1</span>

    <span>要显示的内容2</span>

    <span>要显示的内容3</span>

</div>

要获得span中的内容,使用以下方法均正确。

//jQuery方法,获得第一个span内容

jQuery("#show span").html();

//获得第三个span内容

jQuery("#show span")[2].innerHTML;

//eq()返回jQuery对象,从eq(0)开始。获得第二个span内容

jQuery("#show span").eq(1)[0].innerHTML;

//get()直接返回dom对象,从get(0)开始。获得第三个span内容

jQuery("#show span").get(2).innerHTML;

dom对象转jQuery对象: 使用jQuery()就可将dom对象转为jQuery对象。 如:

jQuery(document.getElementById("show")).html();

输出结果为:

<div id="show">

    <span>要显示的内容1</span>

    <span>要显示的内容2</span>

    <span>要显示的内容3</span>

</div>

这样就实现了jQuery对象和dom对象的相互转换,比如想让焦点停留在id为focus的文本框。只需:

jQuery("#focus")[0].focus();

什么是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对象:[index]和.get(index);

(1)jQuery对象是一个数据对象,可以通过[index]的方法,来得到相应的DOM对象。

如:

var $v =$("#v") ; //jQuery对象 

var v=$v[0]; //DOM对象 

alert(v.checked) //检测这个checkbox是否被选中

(2)jQuery本身提供,通过.get(index)方法,得到相应的DOM对象

如:

var $v=$("#v"); //jQuery对象 

var v=$v.get(0); //DOM对象 

alert(v.checked) //检测这个checkbox是否被选中

DOM对象转成jQuery对象:

对于已经是一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了。$(DOM对象)

如:var v=document.getElementById("v"); //DOM对象

var $v=$(v); //jQuery对象

转换后,就可以任意使用jQuery的方法了。

通过以上方法,可以任意的相互转换jQuery对象和DOM对象。需要再强调注意的是:DOM对象才能使用DOM中的方法,jQuery对象是不可以用DOM中的方法。

转换案例:
获取JQUERY对象的方法

var jqueryObject = $("#test"); //jqeuryObject为一个Jquery对象,它可以使用jquery的所有方法但是不能使用
var jqueryObject = $("#test"); //jqeuryObject为一个Jquery对象,它可以使用jquery的所有方法但是不能使用
DOM对象的方法

var DOMObject = document.getElementById("test");//DOMObject为一个DOM对象,它可以使用DOM的所有方法,但是不能使用jquery的方法
var DOMObject = document.getElementById("test");//DOMObject为一个DOM对象,它可以使用DOM的所有方法,但是不能使用jquery的方法
jquery对象->DOM对象

var jqueryObject = $("#test");//获取jquery对象
var DOMObject = jqueryObject[0];//jquery对象转换为DOM对象
var jqueryObject = $("#test");//获取jquery对象
var DOMObject = jqueryObject[0];//jquery对象转换为DOM对象
DOM对象->jquery对象
var DOMObject = document.getElementById("test");//获取DOM对象
var jqueryObject = $(DOMObject);//DOM对象转换为jquery对象

使用jquery时,有时需要使用原始DOM对象的方法,例如调用Activex控件的某些方法时,此时就需要将jquery对象转换为DOM对象,转换方法如下:

方法1: $("xxx")[index]
方法2:$("xxx").get(index)
方法3:$("xxx").eq(index)[0]

Javascript 相关文章推荐
jQuery选择没有colspan属性的td的代码
Jul 06 Javascript
JS实现匀速运动的代码实例
Nov 29 Javascript
JavaScript中的全局对象介绍
Jan 01 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
Mar 05 Javascript
js实现动态加载脚本的方法实例汇总
Nov 02 Javascript
基于javascript实现九宫格大转盘效果
May 28 Javascript
详解ECharts使用心得总结
Dec 06 Javascript
JavaScript中利用构造器函数模拟类的方法
Feb 16 Javascript
React Native中的RefreshContorl下拉刷新使用
Oct 09 Javascript
Vue项目数据动态过滤实践及实现思路
Sep 11 Javascript
Vue源码探究之虚拟节点的实现
Apr 17 Javascript
layui对工具条进行选择性的显示方法
Sep 19 Javascript
一个选择最快的服务器转向代码
Apr 27 #Javascript
在IE上直接编辑网页内容的js代码(IE地址栏js)
Apr 27 #Javascript
细品javascript 寻址,闭包,对象模型和相关问题
Apr 27 #Javascript
基于jQuery图片平滑连续滚动插件
Apr 27 #Javascript
js 发个判断字符串是否为符合标准的函数
Apr 27 #Javascript
jQuery 对象中的类数组操作
Apr 27 #Javascript
jquery遍历input取得input的name
Apr 27 #Javascript
You might like
php中$this-&amp;gt;含义分析
2009/11/29 PHP
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
js获取页面description的方法
2015/05/21 Javascript
js定时器实例分享
2016/12/20 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
原生JS实现留言板
2020/03/26 Javascript
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
python语言使用技巧分享
2016/05/31 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
Python中字符串与编码示例代码
2019/05/20 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
关于逃课的检讨书
2014/01/23 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
企业消防安全制度
2014/02/02 职场文书
《广玉兰》教学反思
2014/04/14 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang