关于DOM对象与JQuery对象的那些事
这个问题源自上一次的工作室讨论班,主题是“jQuery选择器的使用”,在讨论班的结尾,我留了一个思考题: jQuery获取到的对象和直接调用原生Javascript方法获得的对象有何区别呢? 这个思考题所引申出的内容就是今天的主题了: 关于DOM对象与jQuery对象的那些事~
一、DOM对象与jQuery对象
jQuery是前端领域最流行的插件库之一了,是前端人员必学的技术之一。其强大的选择器、方便快捷的DOM操作能够在一瞬间俘获开发者的心灵,工作室里也有个代代相传的建议:千万不要太早学jQuery,不然会失去学原生JavaScript的动力的~(很多原生JavaScript里很麻烦的操作放在jQuery中区区几行代码就能实现,就会产生用jQuery打江山的幻想233333).。。。。。。 在初学者身上,常常会出现这样的错误:
我也常常被问到这个问题:我已经引入JQuery文件了啊~ 为什么JQuery方法不能用呢?
这里先简单提一下jQuery的实现原理: jQuery的所有方法都封装在核心对象jQuery里,使用这些方法肯定需要实例化。就拿jQuery选择器来说,如下图:
$其实就是jQuery本尊了,平时在使用选择器操作时,其实是使用了jQuery(selector)方法创建并返回了一个jQuery对象。这个jQuery对象中包含着 所获取的DOM对象,并且继承了jQuery对象的方法使得其可以调用之后jQuery带来的一系列非常方便快捷的方法。下面我们来看一下实例:
在文档中创建一个DOM元素,然后分别用原生JavaScript方法和jQuery方法去获取它,得到了两个不同的返回结果。
其中原生JavaScript方法直接返回了DOM对象,可以直接利用浏览器的DOM资源管理器显示在页面中。
、
而jQuery选择器则返回了一个jQuery对象,其中有很多属性。需要特别关注的一点是,对象中的第一个子元素存储着这个元素的DOM对象,也就是用原生JavaScript方法获取到的那个东东~。
可以看到:
直接用JavaScript方法获取到的是DOM对象,其可以使用原生的JavaScript方法而不能使用jQuery方法(原生DOM对象并未继承到jQuery方法);
而通过选择器等jQuery方法获取到的jQuery对象,则无法使用原生JavaScript对象(经过了封装,该对象与DOM对象不同,DOM对象被封装在了一个属性中,故无法直接对jQuery对象使用JavaScript方法)。
二、jQuery对象与DOM对象的相互转换
清楚了两种对象的不同,在编码的时候就会注意区分哪些方法可以用,哪些不可以用。 这个时候,两种对象之间的转换就很重要了,它可以让我们在项目中灵活转换这两种对象,种种方法我们都可以信手拈来~ 下面总结一下转换的方法:
1、DOM对象转换成jQuery对象:
通过$(selector)获取到的元素就是jQuery元素了,可以说选择器方法就是所有jQuery对象的输出地了。
对于一个已经获取好的DOM对象,直接用$()将它包起来就可以转换成jQuery对象了:
2、jQuery对象转换成DOM对象
上面提到了,jQuery对象中的第一项存储着该元素的DOM对象,我们直接访问这个属性即可得到该DOM元素。
3、注意区分两种对象。
jQuery的教材中都会提到,变量要用$开头。其实这条并不是像PHP一般严格的变量语法规定,这是鼓励大家养成一种良好的编程习惯。jQuery对象就用$开头的变量来存储,普通的JavaScript对象就用普通的变量名来存储,一目了然,可以避免很多不必要的错误。 尤其在代码量很大的程序中,如果没有清楚的标识,很容易发生开头那样的错误。
这就是关于DOM对象与jQuery对象之间的那些事了,是jQuery初学者们必须掌握的知识哦~ 关于文章开头提到的jQuery实现原理,这也是我近期非常感兴趣的内容,在这里强烈推荐张鑫旭大神的博文: http://www.zhangxinxu.com/wordpress/2013/07/jquery-%E5%8E%9F%E7%90%86-%E6%9C%BA%E5%88%B6/
~~
关于DOM对象与JQuery对象的那些事的更多相关文章
- DOM对象与jQuery对象的相互转换
DOM 对象可以使用 js 中的方法, 不能使用jQuery中的方法:jQuery对象只能使用jQuery中的方法, 不能使用js中的方法:jQuery对象是通过jQuery包装DOM ...
- jQuery介绍 DOM对象和jQuery对象的转换与区别
jQuery介绍 DOM对象和jQuery对象的转换与区别 jQuery介绍 jQuery: http://jquery.com/ write less, do more. j ...
- DOM对象与jquery对象有什么不同
jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQuery ...
- JavaScript 对象、DOM对象、jquery对象的区别、转换详解
一.JavaScript 对象 JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象只是带有属性和方法的特殊数据类型. 访问对象的属性: [javascrip ...
- DOM对象 与 jQuery对象 之间的相互装换
示例代码: //jQuery对象转DOM对象 //因为jQuery对象是一个数组对象,所以转换为DOM对象时要用索引的形式 var $div1 = $("#div1"); //jQ ...
- DOM对象与jquery对象的区别
jQuery对象和DOM对象使用说明,需要的朋友可以参考下. 1.jQuery对象和DOM对象 第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQue ...
- DOM对象和JQuery对象
1.JS对象转化为Jquery对象 Var p=document.getElementById(“p”); Var $obj=$(p); 2.Jquery对象转换为JS对象 Var $bh=$(“#i ...
- DOM对象和JQuery对象的区别
DOM对象和JQuery对象的区别 jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DO ...
- JavaScript DOM对象和JQuery对象相互转换
1.分析源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
随机推荐
- 关于数组去重的几种方法-------javascript描述
第一种方法:借助json对象来实现,若json对象中无该属性则添加,否则不添加,最后返回json对象的属性,时间复杂度为O(n) function deleteArrayRepeat(arr) { v ...
- http://www.microsoft.com/en-pk/download/details.aspx?id=40762
http://www.microsoft.com/en-pk/download/details.aspx?id=40762
- bzoj violet系列 (2708~2725)
cbh大爷说:写博客不能弃坑. orz cbh 那我就来更新博客了. violet这个系列的题好神啊……出题人好劲啊…… ……怎么最近都在理性愉悦啊…… 另外bzoj400题纪念~ 2708: [Vi ...
- android3D动画,绕y轴旋转
原文地址:http://blog.csdn.net/x_i_a_o_h_a_i/article/details/40449847 其实网上的3D旋转的例子很多,在这里我只是想把其代码做一个解释. 先上 ...
- Angular2 组件通信
1. 组件通信 我们知道Angular2应用程序实际上是有很多父子组价组成的组件树,因此,了解组件之间如何通信,特别是父子组件之间,对编写Angular2应用程序具有十分重要的意义,通常来讲,组件之间 ...
- Python~字典
if not isinstance(x, (int, float)): raise TypeError('bad operand type') range() raw_input(‘birth’) ...
- ABAP 特性值取数 非BAPI方式
特性值在ausp,objnr 一般是客户号或是客户号拼接的,客户号加特征字段特征类别就可以取了
- eclipse工具常用快捷键总结
1. ctrl + shift + r 可以根据类名快速找到你所需要的类名称 2. ctrl + shift + i debug的时候可以查看代码的值 3. ctrl + shift + f ...
- Expression Blend 4 学习笔记
Animation Storyboard(情节提要)在对象和时间线面板中建立和命名,定位到对象(object),通过拖动play head(播放头,时间线中垂直的黄色指示线)定位到特定的时间点,点击“ ...
- scala eclipse plugin 插件安装
最近在看Apache Apollo 代码,其中有很多scala代码,没办法需要安装一个scala插件. 我试过zip 安装,直接下载的update-site.zip 不能直接安装到位.我又特别懒,不想 ...