jQuery之DOM对象和jQuery对象的转换与区别分析


Posted in Javascript onJanuary 08, 2015

本文实例分析了DOM对象和jQuery对象的转换与区别。分享给大家供大家参考。具体分析如下:

jQuery Hello World程序:

<script type="text/javascript" src="xxx//jquery-x.y.z.js">
引入jQuery.存在两个版本,jquery-x.y.z.min.js是精简压缩版,不带min的是开发版,代码中的注释和缩进等都被保留了.

注意路径中的"/"需要转义,即用"//".

$()符号将DOM对象转化为jQuery对象.
Hello World程序如下:

<html>

<head>

    <title>Hello jQuery</title>

    <script type="text/javascript" src="libs//jquery-1.11.2.js"></script>

    <script type="text/javascript">

        $(document).ready(function () {

            alert("Hello World");

        });

    </script>

</head>

<body>
</body>

</html>

$(document).ready和window.onload的比较

首先看window.onload:

window.onload = sayHello;

window.onload = sayWorld;

 

function sayHello() {

    alert("Hello");

}

function sayWorld() {

    alert("World");

}

后面的方法会覆盖掉前面的方法,也即弹泡最后只显示一个,即World的那个.

如果采用$(document).ready,则方法会串联起来,即先显示Hello的alert,再显示World的.

$(document).ready(sayHello);

$(document).ready(sayWorld);

 

function sayHello() {

    alert("Hello");

}

function sayWorld() {

    alert("World");

}

这样就可以关联多个方法.
另一个很小的差别,就是ready方法的执行会稍微靠前一点.widow.onload会等待DOM准备好,并且所有绑定结束,而ready只能DOM准备好,其他工作可能还没有做好.

实例:给每一个超链接对象附加onclick事件

首先,body中添加多个超链接对象:

<body>

    <a href="#">test1</a><br>

    <a href="#">test2</a><br>

    <a href="#">test3</a><br>

    <a href="#">test4</a>

</body>

要给每个对象添加onclick事件,可以有多种方法:
首先,可以在每个a标签里面写onclick属性;
其次,可以利用window.onload添加一个方法,获取所有的标签,统一添加事件,如下:

window.onload = function () {

    var myLinks = document.getElementsByTagName("a");

    for(var i = 0; i < myLinks.length; ++i){

        myLinks[i].onclick = function(){

            alert("Hello link: " + i);

        }

    }

}

注意,这里我犯了一个错误,我本来以为alert的数目会递增,结果实际运行的结果是每一个alert都是4.
这是因为js没有块级作用域,变量i引用的是for里的那个,循环后变成了4.也即,onclick事件发生的时候才去取i的值,当然都是4了.
 
下面用jQuery实现这一功能:

$(document).ready(function () {

    $("a").click(function () {

        alert("Hello link from jQuery!");

    });

});

jQuery中的$()符号会获得页面当中的所有合适的元素.
所以上面的代码隐含了遍历的过程,给每一个元素都加上了事件处理函数.
click方法是jQuery对象提供的方法.
onclick是DOM对象的属性.
DOM里面的很多属性到jQuery里面就变成了方法.

DOM对象和jQuery对象之间的相互转换与区别

看一个例子,首先加一个p标签:

<p id="clickMe">Click Me!</p>

先获得一个DOM对象,然后将其转换为一个jQuery对象:

//Part 1: DOM --> jQuery

//DOM object:

var pElement = document.getElementsByTagName("p")[0];

alert("DOM pElement: " + pElement.innerHTML);

//Convert DOM object to jQuery object:

var pElementjQuery = $(pElement);

alert("jQuery pElementjQuery: " + pElementjQuery.html());

也可以先获得一个jQuery对象,再将其转换为DOM对象:

//Part 2: jQuery --> DOM

//jQuery object array:

var clickMejQuery = $("#clickMe");

//Convert jQuery object to DOM object (2 ways):

//way 1:

var domClickMe1 = clickMejQuery[0];

alert("dom1: " + domClickMe1.innerHTML);
//way 2:

var domClickMe2 = clickMejQuery.get(0);

alert("dom2: " + domClickMe2.innerHTML);

再次注意:jQuery中$()获取的是一个满足条件的所有元素的数组.

小总结:

$("字符串")会返回满足条件的所有元素的一个数组,其中:
字符串以#开头,表示id;
字符串以.开头,表示CSS的class名;
若非以上两种情况,则改字符串表示标签名.

$(DOM对象)可以得到一个jQuery对象.

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 应用类库代码
Jun 02 Javascript
浅谈javascript的原型继承
Jul 25 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
Mar 18 Javascript
jquery新的绑定事件机制on方法的使用方法
Apr 15 Javascript
自己动手写的javascript前端等待控件
Oct 30 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
May 25 Javascript
微信小程序  http请求封装详解及实例代码
Feb 15 Javascript
解决JQuery全选/反选第二次失效的问题
Oct 11 jQuery
jQuery+PHP实现上传裁剪图片
Jun 29 jQuery
解决$store.getters调用不执行的问题
Nov 08 Javascript
原生JS与JQ获取元素的区别详解
Feb 13 Javascript
vue实现图书管理系统
Dec 29 Vue.js
JavaScript结合AJAX_stream实现流式显示
Jan 08 #Javascript
jQuery中siblings()方法用法实例
Jan 08 #Javascript
推荐5 个常用的JavaScript调试技巧
Jan 08 #Javascript
jQuery中prevUntil()方法用法实例
Jan 08 #Javascript
jQuery中prevAll()方法用法实例
Jan 08 #Javascript
jQuery中prev()方法用法实例
Jan 08 #Javascript
深入探密Javascript数组方法
Jan 08 #Javascript
You might like
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
javascript函数中的arguments参数
2010/08/01 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
2018/11/08 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
Python获取文件ssdeep值的方法
2014/10/05 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
python高级特性简介
2020/08/13 Python
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
小学敬老月活动方案
2014/02/11 职场文书
先进事迹演讲稿
2014/09/01 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技
vue组件vue-esign实现电子签名
2022/04/21 Vue.js
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers