前言

通过问题看本质:

举例:

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对象之间的区别的更多相关文章

  1. dom变成jquery对象 先获取dom对象 然后通过$()转换成jquery对象

    dom变成jquery对象   先获取dom对象 然后通过$()转换成jquery对象

  2. dom转换成jquery对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  3. js中的DOM对象 和 jQuery对象 比较

    一,二者的区别 通过 jQuery 获取的元素是一个数组,数组中包含着原生JS中的DOM对象. 总结:jQuery 就是把 DOM 对象重新包装了一下,让其具有了 jQuery 方法. 二,二者的相互 ...

  4. DOM对象和js对象以及jQuery对象的区别

    DOM对象和js对象以及jQuery对象的区别 DOM对象和js对象以及jQuery对象的区别 一.DOM对象 文档对象模型简称DOM,是W3C组织推荐的处理可扩展置标语言的标准编程接口. DOM实际 ...

  5. js中的DOM对象和jQuery对象的比较

    1. 二者的不同之处: 通过jQuery获取的元素是一个数组, 数组中包含着原生JS中的DOM对象. 例如, 针对下面的一个div结构: <div id="Box">& ...

  6. jQuery对象和Dom对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. javascript DOM对象转jquery对象

    首先,假设一种情形:要在HTML文件中为一个select对象添加一个函数,这个函数的名字叫dynamic_change(this),当select的option被改变的时候调用onchange事件来处 ...

  8. Dom对象和JQuery对象的详细介绍及其区别

    一直搞不清Dom对象和JQuery对象之间的区别,今天好好总结下 1.dom对象(摘抄自百度百科http://baike.baidu.com/link?url=4L8bZ7kW6kE-it4F-1LU ...

  9. DOM对象和JQuery对象进行转换

    var btn=document.getElementById("btn"); $(btn).click(function(){}); DOM对象转换为JQuery对象: 用$符号 ...

  10. jquery对象和js对象

    <ul id="ul1">   <li id="li_1">01</li>   <li>02</li> ...

随机推荐

  1. 资源从3ds max导入UE4问题

    1.先删掉灯光和相机.材质命名为英文,贴图也要英文取名,不能有中文,并且必须是JPG格式.并整理好组:删掉多余的物体,例如线2.坐标归零.并把材质转换为默认材质3.选中一个组,先unground,然后 ...

  2. Charles抓包(未完待续)

    Charles是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析. Charles 通过将自己设置成系统的网络访问代理服务器,使得 ...

  3. sql语法中的中的with rollup

    就一道ctf题分析 http://ctf5.shiyanbar.com/web/pcat/index.php 打开一看是个登陆框,首先想到的是盲注,查看源代码,有个源文件, $filter = &qu ...

  4. 优先队列重载<运算符

    https://vjudge.net/problem/POJ-3190 #include<iostream> #include<cstdio> #include<queu ...

  5. ABAP WB01 BDC ”No batch input data for screen & &“ ”没有屏幕 & & 的批输入数据“

    公司今年计划大批扩建门店,需要自动化维护相关主数据,其中就有一步通过调用 WB01的BDC录屏来自动创建地点,前台跑没有问题,但后台JOB死活不行,屏幕是以前同事录好的,只能硬着头皮修改. 后台任务日 ...

  6. sqlite "insert or replace" 和 "insert or ignore" 用法

    insert or replace:如果不存在就插入,存在就更新insert or ignore:如果不存在就插入,存在就忽略只对UNIQUE约束的字段起作用.举例:建表:CREATE TABLE T ...

  7. Jupyter notebook安装扩展插件

    1. 安装Jupyter Notebook pip install jupyter 2. 安装Jypyter Notebook扩展包 pip install jupyter_contrib_nbext ...

  8. WSDL测试webservice接口记录

    收到一个事情,需要对接第三方API,对方给了个service,看了一下,原来是webservices的. 上一次测试webervice的接口,还是至少八九年前的时候了,这种相对比较老旧的也好久不在使用 ...

  9. 字符串截取mysql

    2017-05-26 --SUBSTR(addtime, 1, 10) --substr(string string,num start,num length); --string为字符串 --sta ...

  10. 使用 Nginx 为 Linux 实例绑定多个域名

    KB: 41467 · 更新时间:2018-11-16 20:26:51     Nginx 是一款广泛应用的 Web 服务器,常用于反向代理.负载均衡器以及 HTTP 缓存等.本文以 CentOS ...