专栏首页LanceToBigDataJS对象与Dom对象与jQuery对象之间的区别

JS对象与Dom对象与jQuery对象之间的区别

前言

通过问题看本质: 举例: js的写法:document.getElementById('save').disabled=true; 在jquery中我是这样写的

$("#save").disabled = true;  //没有效果

分析: 其实因为$("#save")出来的其实是jQuery对象,而不是普通DOM对象 解决方法: 1)用JQ写法

$("#save").attr("disabled","true");  

2)转成DOM写法

$("#save")[0].disabled=true;  
当然,$("#save")[0]也可以写成$("#save").get(0)。他返回的也是DOM元素。  
$("#save").eq(0)得到的还是jq对象,$(dom对象)就能得到一个jq对象。

一、Dom对象、JavaScript对象、jQuery对象

1.1 Dom对象

文档对象模型简称DOM,是W3C组织推荐的处理可扩展置标语言的标准编程接口。

  • DOM实际上是以面向对象方式描述的文档模型。DOM定义了表示和修改文档所需的对象、 这些对象的行为和属性以及这些对象之间的关系。
  • 通过DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的 内容进行修改和删除,同时也可以创建新的元素。
  • DOM 独立于平台和编程语言。它可被任何编程语言诸如 Java、JavaScript 和 VBScript 使用。
  • DOM对象,即是我们用传统的方法(javascript)获得的对象。
  • DOM准确说是对文档对象的一种规范标准(文档对象模型),标准只定义了属性和方法行为。

1.2 JavaScript对象

  • JavaScript 提供多个内建对象,比如 String、Date、Array 等等。
  • 对象只是带有属性和方法的特殊数据类型。
  • 通过js获取的DOM对象就是js对象
  • 当浏览器支持js的dom接口(api)时,这里狭义的dom对象是以js对象的形式出现的, 也就是一个js对象。

1.3 jQuery对象

1)概述 jQuery对象其实是一个JavaScript的数组,这个数组对象包含125个方法和4个属性 4个属性分别是:

  • jquery 当前的jquery框架版本号
  • length 指示该数组对象的元素个数 .
  • context 一般情况下都是指向HtmlDocument对象 .
  • selector 传递进来的选择器内容

jquery对象就是通过jQuery包装DOM对象后产生的对象。jQuery对象是jQuery独有的, 其可以使用jQuery里的方法,但是不能使用DOM的方法;反过来Dom对象也不能使用 jquery的方法。 2)jQuery对象和js对象区别

  • jQuery对象属于js的数组
  • jQuery对象是通过jQuery包装的DOM对象后产生的
  • jQuery对象不能使用DOM对象的方法和属性
  • DOM对象不能使用jQuery对象的方法和属性

3)jQuery对象和js对象之间的相互转换

  • js转jQuery对象 $(js对象)
  • jQuery对象转js对象
var doc2=$("#idDoc2")[0];   //转换jQuery对象为DOM对象  
doc2.innerHTML="这是jQuery的第一个DOM对象"  
  //使用jQuery对象本身提供的get函数来返回指定集合位置的DOM对象  
var doc2=$("#idDoc2").get(0);  
doc2.innerHTML="这是jQuery的第二个DOM对象"  

二、细说jQuery对象和DOM对象的区别与使用

2.1 jQuery对象和DOM对象

DOM对象,即是我们用传统的方法(javascript)获得的对象,jQuery对象即是用 jQuery类库的选择器获得的对象。

var domObj = document.getElementById("id"); //DOM对象
var $obj = $("#id"); //jQuery对象;

jQuery对象就是通过jQuery包装DOM对象后产生的对象,它是jQuery独有的。 如果一个对象是jQuery对象,那么就可以使用jQuery里的方法。

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

等同于js中:

document.getElementById("foo").innerHTML;

注意:在jQuery对象中无法使用DOM对象的任何方法。 例如:

$("#id").innerHTML 和$("#id").checked之类的写法都是错误的 

可以用

$("#id").html()和$("#id").attr ("checked")之类的 jQuery方法来代替。

同样,DOM对象也不能使用jQuery方法。学习jQuery开始就应当树立正确的观念, 分清jQuery对象和DOM对象之间的区别,之后学习 jQuery就会轻松很多的。

2.2 jQuery对象和DOM对象的互相转换

2.2.1 jquery对象转换成dom对象

jquery提供了两种方法将一个jquery对象转换成一个dom对象,即[index]和get(index)。 可能有人会觉得奇怪,怎么是用下标呢,没错,jquery对象就是一个数组对象。 举例:

var $cr=$("#cr"); //jquery对象
var cr = $cr[0]; //dom对象 也可写成 var cr=$cr.get(0);
alert(cr.checked); //检测这个checkbox是否给选中

2.2.2 dom对象转换成jquery对象

对于一个dom对象,只需要用$()把dom对象包装起来,就可以获得一个jquery对象了, 方法为$(dom对象); 举例:

var cr=document.getElementById("cr"); //dom对象
var $cr = $(cr); //转换成jquery对象

转换后可以任意使用jquery中的方法了。

三、总结一下

dom对象才能使用dom中的方法,jquery对象不可以使用dom中的方法,但 jquery对象提供 了一套更加完善的工具用于操作dom。

平时用到的jquery对象都是通过$()函数制造出来的,$()函数就是一个jquery对象的制造工厂。

注意: 如果获取的对象是 jquery对象,那么在变量前面加上$,这样方便容易识别出哪些是jquery对象。 举例:

var $variable = jquery对象;

如果获取的是dom对象,则定义如下:

var variable = dom对象

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JavaProblem之hashCode详解

    一、HashCode简介 1.1、什么是Hash和Hash表   要想清楚hashCode就要先清楚知道什么是Hash   1)Hash ? ?  hash是...

    用户1195962
  • Hadoop(九)Hadoop IO之Compression和Codecs

    前言   前面一篇介绍了Java怎么去查看数据块的相关信息和怎么去查看文件系统。我们只要知道怎么去查看就行了!接下来我分享的是Hadoop的I/O操作。   在...

    用户1195962
  • JavaWeb(四)EL表达式

    前言   前面详细的说明了什么是JSP和它的一些元素,这篇给大家介绍一下的是EL表达式。 用EL表达式,能更好的使用JSP中的各种内置对象和作用域。   楼主...

    用户1195962
  • 2018-07-161 初识JQuery

    进入官方网站获取最新的版本 http://jquery.com/download/ ,这里需要注意 jQuery 分 2 个系列版本 1.x 与 2.x,主要...

    JavaEdge
  • jquery对象和javascript对象相互转换

    本文转载:http://jeiofw.blog.51cto.com/3319919/786506

    跟着阿笨一起玩NET
  • 前端基础-jQuery对象和DOM对象

    jQuery对象不能使用DOM对象的成员,DOM对象不能使用jQuery对象的成员

    cwl_java
  • 经典面试题-序列化的作用,应用场景

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • 垃圾回收算法(4)-复制算法

    复制算法首先将或者的内存空间分为2块,每次只使用其中一块,在垃圾会搜时将正在使用的内存中的存活对象复 制到未被使用的内存块中,之后清楚正在使用的内存块中的所有对...

    一觉睡到小时候
  • [android] 数据的异步加载和图片保存

    android.permission.MOUNT_UNMOUNT_FILESYSTEMS

    陶士涵
  • 十二张图带你了解 Redis 的数据结构和对象系统

    Redis是一个开源的 key-value 存储系统,它使用六种底层数据结构构建了包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象的对象系统。今天我们...

    程序员历小冰

扫码关注云+社区

领取腾讯云代金券