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对象
JS对象与Dom对象与jQuery对象之间的区别的更多相关文章
- dom变成jquery对象 先获取dom对象 然后通过$()转换成jquery对象
dom变成jquery对象 先获取dom对象 然后通过$()转换成jquery对象
- dom转换成jquery对象
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- js中的DOM对象 和 jQuery对象 比较
一,二者的区别 通过 jQuery 获取的元素是一个数组,数组中包含着原生JS中的DOM对象. 总结:jQuery 就是把 DOM 对象重新包装了一下,让其具有了 jQuery 方法. 二,二者的相互 ...
- DOM对象和js对象以及jQuery对象的区别
DOM对象和js对象以及jQuery对象的区别 DOM对象和js对象以及jQuery对象的区别 一.DOM对象 文档对象模型简称DOM,是W3C组织推荐的处理可扩展置标语言的标准编程接口. DOM实际 ...
- js中的DOM对象和jQuery对象的比较
1. 二者的不同之处: 通过jQuery获取的元素是一个数组, 数组中包含着原生JS中的DOM对象. 例如, 针对下面的一个div结构: <div id="Box">& ...
- jQuery对象和Dom对象
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- javascript DOM对象转jquery对象
首先,假设一种情形:要在HTML文件中为一个select对象添加一个函数,这个函数的名字叫dynamic_change(this),当select的option被改变的时候调用onchange事件来处 ...
- Dom对象和JQuery对象的详细介绍及其区别
一直搞不清Dom对象和JQuery对象之间的区别,今天好好总结下 1.dom对象(摘抄自百度百科http://baike.baidu.com/link?url=4L8bZ7kW6kE-it4F-1LU ...
- DOM对象和JQuery对象进行转换
var btn=document.getElementById("btn"); $(btn).click(function(){}); DOM对象转换为JQuery对象: 用$符号 ...
- jquery对象和js对象
<ul id="ul1"> <li id="li_1">01</li> <li>02</li> ...
随机推荐
- C#文件及数据流技术
空间名称:Sysytem.IO 一.文件.文件夹操作1.创建.删除.移动.复制文件 2.创建.删除.移动.复制文件夹 二.流操作 1.FileSream - 提供读取和写入文件的方式 文本文件的写入与 ...
- [NOIP2018]普及组初赛题解
老师布置的作业,借博客这个平台一用 [总体感觉]对我而言比去年的难度大……特别是最后一题. 选择题 1.D 打印机属于输出设备 2.D 将全部进制转换为10进制进行对比,我的方法是每一位乘以进制的位数 ...
- mysql时间加减运算
一.MySQL 获得当前日期时间 函数 1.1 获得当前日期 + 时间(date + time) 函数:now() mysql> select now();+———————+| now() |+ ...
- 2017.08.08【NOIP提高组】模拟赛B组
Summary 今天的题目也不算很难,唯一一道没做出来的题目是以前做过的,太不应该了. Problem T1 油滴扩展 题目大意 给你一堆点,你准备要在这么多的点当中滴油.你可以自己安排顺序,每次滴油 ...
- Java 反射 调用私有构造方法
单例类: package singleton; public class SingletonTest { // 私有构造方法 private SingletonTest(){ System.out.p ...
- Set authorization for a whole area
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) ...
- Cocoapods pod update执行失败报错CocoaPods was not able to update the `master` repo.2019的解决
很久没动pod,最近更新发现: CocoaPods报CocoaPods was not able to update the `master` repo. If this is an unexpect ...
- Debug 路漫漫-07
201811—201903??? 1)关于训练参数是复数的问题 ——q_k ^theta q_k(是item的特征矩阵)中有可能是负数,而指数 theta 如果是含小数点的话,就会产生复 ...
- Rabbit五种消息队列学习(一) – 总述
RabbitMQ支持五种消息传递类型,分别如下图所示: 上图中显示6中消息队列分别为: 1.简单队列 一个生产者将消息放到队列中,一个消费者监听队列 2.工作队列(Work queues) 一个生产者 ...
- 一目了然了解JAVA集合体系
在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量.一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果 ...