这个问题源自上一次的工作室讨论班,主题是“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对象的那些事的更多相关文章

  1. DOM对象与jQuery对象的相互转换

    DOM  对象可以使用 js       中的方法,  不能使用jQuery中的方法:jQuery对象只能使用jQuery中的方法, 不能使用js中的方法:jQuery对象是通过jQuery包装DOM ...

  2. jQuery介绍 DOM对象和jQuery对象的转换与区别

    jQuery介绍 DOM对象和jQuery对象的转换与区别 jQuery介绍      jQuery: http://jquery.com/      write less, do more.   j ...

  3. DOM对象与jquery对象有什么不同

    jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQuery ...

  4. JavaScript 对象、DOM对象、jquery对象的区别、转换详解

    一.JavaScript 对象 JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象只是带有属性和方法的特殊数据类型. 访问对象的属性: [javascrip ...

  5. DOM对象 与 jQuery对象 之间的相互装换

    示例代码: //jQuery对象转DOM对象 //因为jQuery对象是一个数组对象,所以转换为DOM对象时要用索引的形式 var $div1 = $("#div1"); //jQ ...

  6. DOM对象与jquery对象的区别

    jQuery对象和DOM对象使用说明,需要的朋友可以参考下. 1.jQuery对象和DOM对象 第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQue ...

  7. DOM对象和JQuery对象

    1.JS对象转化为Jquery对象 Var p=document.getElementById(“p”); Var $obj=$(p); 2.Jquery对象转换为JS对象 Var $bh=$(“#i ...

  8. DOM对象和JQuery对象的区别

    DOM对象和JQuery对象的区别 jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DO ...

  9. JavaScript DOM对象和JQuery对象相互转换

    1.分析源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

随机推荐

  1. 8. vim编辑器高级应用

    1. vim主要模式介绍 命令模式.命令行模式.编辑模式 字符操作:i 当前插入, I行首插入, a当前字符之后插入,A行首插入, ESC退出当前模式 2. vim命令模式 3. vim插入模式 4. ...

  2. 下载时,经常看见ASC、MD5、SHA1等,是干什么的呢?

    一 进行文件一致性校验 为了确保你得到的文件是正确的版本,而没有被注入病毒和木马程序.例如我们经常在网上下载软件,而这些软件已经被注入了一些广告和病毒等,如果不进行文件与原始发布商的一致性校验的话,可 ...

  3. 测试基础:Bug管理那些事_20160910

    1.bug由来 虫子爬进主机引起继电器短路,导致机器故障.真正的缺陷是:主机散热孔少装了块金属丝,这样才能防止虫子爬到主机. 2.什么是bug? bug是缺陷的一种表现形式,而一个缺陷是可以引发多种b ...

  4. HTTP的客户端识别与cookie机制

    本文是<HTTP权威指南>的读书笔记 Web服务器可能同时在与数千个客户端同时进行会话,服务器需要记录下它们在与谁交谈,而不是认为所有的请求都来自于匿名客户端.在HTTP中可以有以下几种方 ...

  5. Eclipse使用技巧

    1,整体缩进 右缩进:选中+Tab 左缩进:选中+ Shift+Tab 2,Ctrl+O列出当前类所有方法和属性

  6. 在Mac OS X中配置Apache + PHP + MySQL

    在Mac OS X中配置Apache + PHP + MySQL Mac OS X 内置Apache 和 PHP,使用起来非常方便.本文以Mac OS X 10.6.3和为例.主要内容包括: 启动Ap ...

  7. Python之美--Decorator深入详解

    转自:http://www.cnblogs.com/SeasonLee/archive/2010/04/24/1719444.html 一些往事 在正式进入Decorator话题之前,请允许我讲一个小 ...

  8. mvc file控件无刷新异步上传操作

    前言 上传文件应该是很常见必不可少的一个操作,网上也有很多提供的上传控件.今天遇到一个问题:input控件file无法进行异步无刷新上传.真真的感到别扭.所以就尝试这去处理了一下.主要分三个部分:上传 ...

  9. 【转】Java面试宝典2015版(绝对值得收藏超长版)(一)

    (转自:http://mp.weixin.qq.com/s?__biz=MjM5MTM0NjQ2MQ==&mid=206619070&idx=1&sn=fcb21001d442 ...

  10. Lintcode 85. 在二叉查找树中插入节点

    -------------------------------------------- AC代码: /** * Definition of TreeNode: * public class Tree ...