jquery对象和dom关系对象的区别

第一步,/jQuery_getting_started.html&第二步,新手先仔细得全部看一遍jQuery的选择器,很重要!!!&&&&&&& (/jqueryapi/ 这里是最新文档,有离线版下载)&第三步,深刻了解jQuery对象和普通DOM对象的区别。互相转化见Q1&Q1,js的写法:document.getElementById('save').disabled=&在jquery中我是这样写的$("#save").disabled =& 为什么没效果呢&
A,这个是典型的问题,其实因为$("#save")出来的其实是jQuery对象,而不是普通DOM对象&这是新手常见的问题。&解决方法有2:&1,用JQ写法,$("#save").attr("disabled","true");&2,转成DOM写法$("#save")[0].disabled=&当然,$("#save")[0]也可以写成$("#save").get(0)。他返回的也是DOM元素&
$("#save").eq(0)得到的还是jq对象&$(dom对象)就能得到一个jq对象。&
Q2,获取选中的checkbox&A:&获取所有选中的checkbox:&&&& $("input:checkbox:checked")&判断是否一组checkbox都选中了:&&&& if($("input:checkbox:checked").length){}&判断某一个checkbox是否被选中&&&& if($("input:checkbox").is(":checked")){}&
Q3,我的id里有[]或.之类的符号,怎么办?或者带有命名空间的xml标签带有:怎么办?&A:用\\来转义如&div id="id[1]"&&/div&&$("#id\\[1\\]")&
Q4,在框架页中,如何操作父窗口的对象&A,引用UPC的方法&
没找到很好的方法&只好用DOM方法与jquery方法结合的方式实现了&
1.在父窗口中操作 选中IFRAME中的所有单选钮&$(window.frames["iframe1"].document).find("input[type='radio']").attr("checked","true");&
2.在IFRAME中操作 选中父窗口中的所有单选钮&$(window.parent.document).find("input[type='radio']").attr("checked","true");&
iframe框架的:&iframe src="test.html" id="iframe1" width="700" height="300" frameborder="0" scrolling="auto"&&/iframe&&
IE7中测试通过 回去你自己试试吧&
实现的原理其实很简单 就是用到了$(DOM对象)可以转换成jquery对象&==================================================&
不过我的方法是&window.parent.jQuery("input[name=validate]").val("&%=Session("GetCode")%&");&这段是来自我博客的自动填写验证码的,有兴趣可分析下我的FOOTER里的那个框架。&其实本质上和UPC的方法是一样的。大家可以借鉴参考&
Q5,解析由AJAX加载的XML,和相关乱码问题&A:见之前的帖子:hhttp://bbs./read.php?tid-1673.html&
Q6,我下了一个插件Interface,怎么在最新的jQuery里一点都不好用?&A: Interface已经被完全重写并且改名为jQuery UI,可以在这里找到最新版本:&&&& /&
Q7,在IE下动画会闪一下,效果不理想&A,加上DTD定义即可&比如&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&&
Q8,为什么官方的说&Download jQuery 1.2.3 (15kb, Minified and Gzipped),但我下在下来却有&jquery-1.2.3.min.js&& 52.8 KB&A,显然,他是用了Gzip了(一种服务器端压缩技术,自己GOOGLE)。而不是官网写错了没更新或者是骗人的~&
Q9,pack,min和原版三个版本什么区别呢?&pack是如果服务器没开启gzip的时候用&min是服务器有开gzip的时候用&原版可以用于平时开发的时候,或者自己分析源码用。&
Q10,jQuery用的是什么压缩软件?&A: Dean Edwards 写的Packer http://dean.edwards.name/packer/&
Q11,$('a[@href^="mailto"]') 这个代码在jQuery 1.3里不能用,1.2里可以,为什么?&A:& jQuery 1.3以后已经不需要再使用那个@符号了,只需要简单的去掉那个@符号就可以正常运作了。
阅读(...) 评论()DOM对象和JQuery对象的区别 - 希望你喜欢 - 博客园
jQuery对象和DOM对象使用说明,需要的朋友可以参考下。1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解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特有的方法;上面的那段代码等同于:document.getElementById("foo").innerHTML;
注意:在jQuery对象中无法使用DOM对象的任何方法。例如$("#id").innerHTML 和$("#id").checked之类的写法都是错误的,可以用$("#id").html()和$("#id").attr ("checked")之类的 jQuery方法来代替。同样,DOM对象也不能使用jQuery方法。学习jQuery开始就应当树立正确的观念,分清jQuery对象和DOM对象之间的区别,之后学习 jQuery就会轻松很多的。
2.jQuery对象和DOM对象的互相转换
在上面第一点说了,jquery对象和dom对象是不一样的!比如jquery对象不能使用dom的方法,dom对象不能使用jquery方法,那假如我 jquery没有封装我要的方法,那能怎么办呢?这时我们可以将jquer对象转换成dom对象
jquery对象转换成 dom对象jquery提供了两种方法将一个jquery对象转换成一个dom对象,即[index]和get(index)。可能有人会觉得奇怪,怎么是用下标呢,没错,jquery对象就是一个数组对象.下面代码将演示一个jquery对象转换成dom对象,再使用dom对象的方法复制代码 代码如下:
var $cr=$("#cr"); //jquery对象var cr = $cr[0]; //dom对象 也可写成 var cr=$cr.get(0);alert(cr.checked); //检测这个checkbox是否给选中
dom对象转换成jquery对象对于一个dom对象,只需要用$()把dom对象包装起来,就可以获得一个jquery对象了,方法为$(dom对象);复制代码 代码如下:
var cr=document.getElementById("cr"); //dom对象var $cr = $(cr); //转换成jquery对象
转换后可以任意使用jquery中的方法了.
通过以上的方法,可以任意的相互转换jquery对象和dom对象.最后再次强调,dom对象才能使用dom中的方法,jquery对象不可以使用dom中的方法,但 jquery对象提供了一套更加完善的工具用于操作dom,关于jquery的dom操作将在后面的文章进行详细讲解.
ps: 平时用到的jquery对象都是通过$()函数制造出来的,$()函数就是一个jquery对象的制造工厂.建议:如果获取的对象是 jquery对象,那么在变量前面加上$,这样方便容易识别出哪些是jquery对象,例如:var $variable = jquery对象;如果获取的是dom对象,则定义如下:var variable = dom对象初学jQuery,感觉jQuery对象和DOM对象的区分,对于以后的学习还是很重要的,把自己的体会给大家分享一下,欢迎喷!
DOM称为文档对象模型,是W3C制定的一套标准,是把构成html页面元素(如html, title, body, input等)定义为标准对象,通过这些对象可以访问到这些元素并可以进行处理(如修改属性,增删元素等操作)。
jQuery对象,我在网上没有找到官方的解释,我认为可以粗暴地认为jQuery对象就是把DOM对象用一个数组进行了封装,数组中的元素就是DOM元素。
我们来做以下验证:
在页面中,我们添加一个input标签(这个标签是什么类型无所谓,只是为了演示而已):
&input id="id1" name="name1" class="abc"/&
然后分别用DOM方式和jQuery方式选择到这个元素,并将这个元素打印到控制台:
var dom_obj = document.getElementById("id1")
console.log(dom_obj);
var $jq_obj = $('#id1');
console.log($jq_obj);
控制台输出为:
从输出可以看出,DOM方式只是单独的一个元素,而jQuery方式则是将这个元素用一个数组包起来,并还加了一些其他的信息(这些其他信息,呃,我还没弄明白,就不乱说了……)
我们来将这两个元素展开,看看这个对象都包含些什么内容
先来展开DOM方式获取的元素
由于这个展示内容很多,我截图就只截前面一部分了,后面的都是一样的各种属性。这些属性,我们都可以使用 “.”操作符来访问:
console.log(dom_obj.attributes);
console.log(dom_obj.attributes[0]);
console.log(dom_obj.autofocus);
控制台输出为:
可以看出,DOM元素的属性,我们可以直接通过“.”操作符来访问,如果是单属性的,则直接返回这个属性的值,对于有多个值的属性,则以数组的形式返回,然后通过下标的形式访问到具体的值。当然,也可以对这些属性进行赋值。这里就不演示了。
我们再来看看jQuery对象,展开是什么样子:
jQuery对象就是一个数组,展开后,首先是获取到的DOM元素,后面是一些附加信息。从这里,我们也可以知道,通过“.”操作符,我们只能获取到context, length, selector,分别对应于Element类型(jQuery1.10标记为过时,后期可能会被移除,我们就不再分析了),获取的元素个数,选择器属性
除了以上三个属性,我们再无法直接访问到其他属性了,这也是我们不能使用DOM方式获取jQuery对象的属性值的原因。
对于大多数情况下,我们并不关心context, length, selector这三个属性,而是会关心我们选择到的元素的一些属性,虽然我们不能使用DOM方式去访问这些属性,jQuery为我们提供了相应的方法去获取,下面随便写两个,其他的,大家可以自己去试
console.log($jq_obj.attr('id'));
console.log($jq_obj.html());
最后,就是DOM对象和jQuery对象的转换了,方式很简单:
DOM转jQuery:
var $jq_obj = $(dom_obj); //直接通过$()方式转换
jQuery转DOM
var dom_obj1 = $jq_obj[index];
var dom_obj2 = $jq_obj.get(index);
为演示可以选择到多上元素的选择器,我们将页面中的元素添加到三个,这三个元素都有同样的class属性值:
&input id="id1" name="name1" class="abc"/&
&input class="abc" id="id2" name="name2"&
&button class="abc" name="name3"&&/button&
下面,是对DOM对象和jQuery对象的转换进行演示:
var dom_obj1 = document.getElementById("id1");
var dom_obj2 = document.getElementById("fhdf");
console.log("id选择器选择的DOM对象");
console.log(dom_obj1);
console.log(dom_obj2);
var $dom_obj1 = $(dom_obj1);
var $dom_obj2 = $(dom_obj2);
console.log("将id选择器选择的DOM对象转换为jQuery对象");
console.log($dom_obj1);
console.log($dom_obj2);
var dom_obj3 = document.getElementsByClassName("abc");
var dom_obj4 = document.getElementsByClassName("afgjdfg");
console.log("类选择器选择的DOM对象");
console.log(dom_obj3);
console.log(dom_obj4);
var $dom_obj3 = $(dom_obj3);
var $dom_obj4 = $(dom_obj4);
console.log("将类选择器选择的DOM对象转换为jQuery对象");
console.log($dom_obj3);
console.log($dom_obj4);
var $jq_obj1 = $("#id1");
var $jq_obj2 = $("#fjkhfhg");
console.log("id选择器选择的jQuery对象");
console.log($jq_obj1);
console.log($jq_obj2);
var jq_obj1 = $jq_obj1[0];
var jq_obj2 = $jq_obj1.get(0);
console.log("将id选择器选择的jQuery对象转换为DOM对象");
console.log(jq_obj1);
console.log(jq_obj2);
var $jq_obj3 = $(".abc");
var $jq_obj4 = $(".lkj");
console.log("类选择器选择的DOM对象");
console.log($jq_obj3);
console.log($jq_obj4);
var jq_obj3 = $jq_obj3[0];
var jq_obj4 = $jq_obj3.get(0);
var jq_obj5 = $jq_obj3[1];
var jq_obj6 = $jq_obj3.get(1);
console.log("将id选择器选择的jQuery对象转换为DOM对象");
console.log(jq_obj3);
console.log(jq_obj4);
console.log(jq_obj5);
console.log(jq_obj6);
控制台输出为:
综上所述:
jQuery对象可以看作是将DOM对象进行了封装
DOM对象选择不到元素,如果是单元素选择器是返回null,多元素选择器是返回一个长度为0的空数组;jQuery对象,无论是多元素还是单元素选择器,都是返回一个长度为0的空数组
DOM对象一般是通过“.”操作符来访问和操作属性,jQuery对象是提供了一系列方法来访问和操作属性,二者访问操作属性的方式不能通用。
两种对象之间可以方便地转换
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:10271次
排名:千里之外
原创:10篇系统学习jQuery.核心知识.FAQ.jQuery对象与DOM对象区别与联系
1.全局关系
学前端的DOM技术与jQuery技术时,经常分不清jQuery对象与DOM对象以及它们的联系与区别,其实两者关系可用下图表示,下面所有的说明也围绕此图展开。
DOM对象可以看成是DOM树中的结点(关于DOM的详细内容看我其它的博文)。
获取方法为getElementById()和getElementsByTagName()两种。
var obj=document.getElementById("id");//获得DOM对象
var txt=obj.innerHTML;//获得DOM对象的innerHTML属性值
3.jQuery对象
jQuery对象是通过jQuery对象工厂函数(即$())包装DOM对象产生的对象,比DOM对象好的地方是可以使用jQuery中非常丰富的属性和方法。
$("#hi").html();//通过id为hi的DOM对象获得对应的jQuery对象,调用jQuery对象的方法获得其内容
document.getElementById("hi").innerHTML;
4.注意事项
jQuery对象不能使用DOM对象的方法,当然反过来也成立。如,$("#hi").innerHTML和$("#hi").checked等写法是错误的,因为这是DOM对象才拥有的方法,可以使用$("#hi").html()和$("#hi").attr("checked")等jQuery方法代替,当然也不能用document.getElementById("id").html(),应用document.getElementById("id").innerHTML代替。
5.jQuery对象与DOM对象相互转换
①DOM对象转换为jQuery对象
只要用$()函数把DOM对象封装即可,注意返回值是jQuery对象,注意此时接收返回值变量的命名方式为var $varName;
var domObj=document.getElementById("id");//获得DOM对象
var $jObj=$(domObj);//获得对应jQuery对象,现在就可以使用此对象各种牛叉的jQuery方法了。。。。
②jQuery对象转换为DOM对象
当jQuery对象的方法属性不熟悉,或者没有想要的方法时,就要把jQuery对象转为DOM对象,jQuery对象是个类似于数组的对象,可以通过数组下标或其get(index)方法得到对应DOM对象。具体如下:
(1)通过下标
var $jObj=$("#hi");//获得jQuery对象
var domObj=$jObj[0];
(2)jQuer对象的get(index)方法
var $jObj=$("#hi");//获得jQuery对象
var domObj=$jObj.get(0);
通过以上方法可实现两种不同类型对象的随便互换,使用不同的体系下的方法和属性,是不是非常的爽。。。
6.jQuery对象与DOM对象小实例
说明:下面小案例,不断地进行jQuery对象与DOM对象的转换,只是想表明是否真得明白DOM对象与jQuery对象,如果真的在项目中,是不用这个啰嗦的。
功能:如果没有用户协议(checkbox没选定),提交按钮是被禁用的,选定后自然打开。
&script type="text/javascript" src="jquery.min.js"&&/script&
&script type="text/javascript"&
$(document).ready(function(){
var $jObjBtn=$("Button");//获取jQuery对象。
$jObjBtn.attr("disabled",true);//利用jQuery对象方法对按钮进行禁用。
var domObjCB=document.getElementById("cb");//获取DOM对象
var $jObjCB=$(domObjCB);//DOM对象->jQuery对象
$jObjCB.click(function(){
if($jObjCB.is(":checked"))//is()是jQuery中的方法,判断此对象是否被选中,返回boolean值
var domObjBtn=$jObjBtn[0];//下标法把jQuery对象转换为DOM对象
domObjBtn.disabled=//DOM对象的属性
var domObjBtn=$jObjBtn.get(0);//jQuery对象get()方法把其转换为DOM对象
domObjBtn.disabled=
I've read the note.
&script type="text/javascript" src="jquery.min.js"&&/script&
&script type="text/javascript"&
$(document).ready(function(){
$("Button").attr("disabled",true);
$("#cb").click(function(){
if($("#cb").is(":checked"))
$("Button").attr("disabled",false);
$("Button").attr("disabled",true);
I've read the note.}

我要回帖

更多关于 jquery对象特点 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信