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 相关文章推荐
js判断页面中是否有指定控件的简单实例
Mar 04 Javascript
关于javascript中dataset的问题小结
Nov 16 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
Jan 25 Javascript
BootStrap和jQuery相结合实现可编辑表格
Apr 21 Javascript
AngularJS实现controller控制器间共享数据的方法示例
Oct 30 Javascript
详解mpvue开发小程序小总结
Jul 25 Javascript
Bootstrap模态对话框中显示动态内容的方法
Aug 10 Javascript
node.js之基础加密算法模块crypto详解
Sep 11 Javascript
BootStrap table实现表格行拖拽效果
Dec 01 Javascript
TypeScript开发Node.js程序的方法
Apr 30 Javascript
JS中超越现实的匿名函数用法实例分析
Jun 21 Javascript
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
一个选择最快的服务器转向代码
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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
ThinkPHP中的系统常量和预定义常量集合
2014/07/01 PHP
PHP分页类集锦
2014/11/18 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
PHP守护进程实例
2015/03/06 Javascript
Javascript点击按钮随机改变数字与其颜色
2016/09/01 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
python调用支付宝支付接口流程
2019/08/15 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
Pytorch转tflite方式
2020/05/25 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
Python 代码调试技巧示例代码
2020/08/11 Python
企业内控岗位的职责
2014/02/07 职场文书
实验教师岗位职责
2014/02/13 职场文书
2014国庆节标语口号
2014/09/19 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
办公室主任岗位职责
2015/01/31 职场文书
人事专员岗位职责
2015/02/03 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python