zoukankan      html  css  js  c++  java
  • JS对象与Dom对象与jQuery对象之间的区别

    原文地址:https://www.cnblogs.com/zhangyinhua/p/9487096.html

    前言

    通过问题看本质:
    举例:
    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对象
  • 相关阅读:
    题解[LuoguP7419 「PMOI-2」参天大树]
    UVA11582 巨大的斐波那契数! Colossal Fibonacci Numbers!
    数学专题
    [计蒜客]dp
    [蓝桥杯每日一题]1.3 & 1.4
    【acm】2020icpc南京补题
    [acm]乐师师范学院校赛题解-2020
    西南交通大学峨眉校区第二届"INT"杯程序设计竞赛——决赛
    指针与结构体
    [acm] 动态规划——最长上升子序列
  • 原文地址:https://www.cnblogs.com/dyh004/p/10966232.html
Copyright © 2011-2022 走看看