如何区分jquery对象和dom对象?

请讲解下,如何区分jquery对象和dom对象?
最新回答
深蓝菇凉

2024-09-29 08:12:41

dom和z的区别

dom和z的区别:DOM是文档对象模型,每个DOM对象都可以看成一棵树,构建了基本的网页。而jquery对象是通过包装之后产生的。jquery对象是jquery自己所独有的。DOM对象和jquery对象的任何方法都是私有的,不可以相互使用。

jQuery('#showDiv').html(aaa)和document.getElementById('showDiv').innerHTML=aaa的区别?

第一:jQuery('#showDiv').html(aaa)是jQuery对象。而document.getElementById('showDiv').innerHTML是DOM对象。那么jQuery对象和DOM对象的区别就是:

jQuery对象就是通过jQuery包装DOM对象后产生的对象。

DOM(DocumentObjectModel,文档对象模型),每一份DOM都可以表示成一棵树。

举例说明:

(1)$("#foo").html();//jQuery对象

(2)document.getElementById("foo").innerHTML;//DOM对象

(1)和(2)是等同的。值得注意的是:在jQuery对象中无法使用DOM对象的任何方法。例如:$("#id").innerHTML和$("#id").checked之类的写法都是错误的,可以用$("#id").html()和$("#id").attr("checked")之类的jQuery方法代替。同样,DOM对象也不能使用Jquery里的方法。

第二:jQuery对象和DOM对象相互转换

方法1:通过[index]的方法得到相应的DOM对象。

方法2:通过jQuery本事提供的get(index)方法得到相应的DOM对象。

希望能帮到你!

js中提到的dom引用是什么意思

这两行代码要区分的是DOM对象和jQuery对象的区别。

DOM对象和jQuery对象是两种不同的对象,它们的实例也因此具有不同的属性和方法。通常要操作页面中的节点,我们都需要想办法获取对该节点的引用。比如如下代码:

var?dom?=?document.getElementById('节点id');

这是通过节点的id来获取一个页面节点,也就是对节点的引用。这个时候,我们对变量dom的任何操作,实际上就是对页面节点的操作,比如说修改样式、移除节点、获取属性等等。如下:

dom.style.display?=?'none';?//?隐藏节点

dom.parentNode.removeChild(dom);?//?删除节点

var?height?=?dom.offsetHeight;?//?获取节点高度

像上面的style、parentNode、removeChild、offsetHeight等等,都是DOM对象的属性或方法。

因为DOM对象不属于javascript的一部分,它是各个浏览器对javascript的扩展,但各个浏览器又都在实现上有一些不一致,导致javascript代码需要处理很多兼容性问题。为了解决这些兼容性问题,提高开发效率,jQuery库就诞生了。

jQuery解决了兼容性问题,再加上它的实现极其巧妙,因此得到了很多人的吹捧。以前有一点javascript基础的人,要写出稍微复杂些的特效,几乎都不可能,但因为jQuery的出现,类似显示隐藏、各种动画效果,都只需要简单的几行代码即可。有些人甚至觉得,jQuery甚至都能替代javascript,而且在各个前端学习的站点、博客中,也是将jQuery和javascript并列作为一类。

但问题是,不了解基础的javascript,在遇到问题、异常的时候,你就只能干瞪眼了。任何语言,框架和库都无法取代最基础的语法,而且框架和库也都是由最简单的语法丰富起来的。

jQuery实际上可以说是一个大的类——javascript实现的类。以一个简单的模型来说,如下:

;(function(window,?undefined){

window.$?=?window.jQuery?=?jQuery;

//?定义jQuery类

function?jQuery(selector,?content){

content?=?content?||?document;

var?eles?=?content.querySelectorAll(selector);

var?len?=?eles.length;

//?给jQuery对象添加长度属性

this.length?=?len;

//?方便获取dom对象,获取实例:jQuery('#id')[0];

for(var?i?=?0;?i??len;?i++){

this[i]?=?eles[i];

}

}

//?扩展原型

jQuery.prototype?=?{

//?构造函数

constructor?:?jQuery,

//?根据索引获取dom对象

get?:?function(index){

return?this[index];

}

}

})(window);

这是一段jQuery的模拟代码,你可以使用如下方式调用:

var?jqObj?=?new?jQuery('.class');

因为jQuery的特殊处理,写jQuery代码的时候不需要new即可用,但这里没有处理,所以需要加上new关键字。

上面返回的jqObj,就是我定义的jQuery的一个对象,它是jQuery对象,已经不是DOM对象了。我可以写如下代码:

var?dom?=?jqObj.get(1);?//?获取jQuery对象中下标为1的DOM对象

然后变量dom就和之前的变量dom一样,可以使用DOM对象的属性和方法了。

但是,我们不能写下面的代码,否则它就会报异常:

jqObj.style.color?=?'red';

因为jQuery对象的实例,根本就没有style这个属性。jQuery也是一样的,jQuery对象和DOM对象是两种不同的对象,它们的内部结构(比如上面的get方法是自定义的)也是不同的。当你把jQuery对象当做DOM对象使用时,你调用该对象的任何属性和方法,都有可能触发一个属性或方法未定义的异常,因为这个属性或方法确实不存在。

所以,如果你使用了jQuery库,那你就得在操作节点的时候,注意区分这个节点对象到底是DOM对象,还是jQuery对象。基本上jQuery的方法如果返回节点对象,返回值大多是jQuery对象,但也有例外,比如get等。

回到你的题目,通过jQuery获取的canvas对象,实际上是jQuery对象封装后的对象。它没有getContext方法,所以会报错。但jQuery对象可以像访问数组一样,通过中括号来获取对应的DOM对象,所以第二种返回了最原始的Canvas对象,它是具有getContext方法的。

jquery选择器与原生选择器选择DOM结果不同?

当然不同,jq选择器选择的结果是经过封装的dom对象(可以叫做jquery对象),添加了jq自身的一些专有的属性和方法,比如$('.xxx').index(),而原生的dom对象却不能这样用。

通过简单的方法就能在原生dom对象与jquery对象之间转换:

假如a是dom对象,那么$(a)就是转换后的jquery对象;

假如a是jquery对象,那么a[0]就是转换后的dom对象

jquery判断是不是dom对象

不是。

dom对象:

DOM—DocumentObjectModel,它是W3C国际组织的一套Web标准。它定义了访问HTML文档对象的一套属性、方法和事件。

DOM是以层次结构组织的节点或信息片断的集合。文档对象模型(DocumentObjectModel)是给HTML与XML文件使用的一组API。DOM的本质是建立网页与脚本语言或程序语言沟通的桥梁。