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 相关文章推荐
读jQuery之六 缓存数据功能介绍
Jun 21 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
Oct 11 Javascript
js实现网页自动刷新可制作节日倒计时效果
May 27 Javascript
js动态切换图片的方法
Jan 20 Javascript
JavaScript基本数据类型及值类型和引用类型
Aug 25 Javascript
详解Javascript中的Object对象
Feb 28 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
May 05 Javascript
JavaScript递归算法生成树形菜单
Aug 15 Javascript
Angular实现的简单查询天气预报功能示例
Dec 27 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
Sep 03 Javascript
node.js中npm包管理工具用法分析
Feb 14 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
Jan 19 Javascript
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 和 MYSQL
2006/10/09 PHP
一个简单的php实现的MySQL数据浏览器
2007/03/11 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
php对mongodb的扩展(初出茅庐)
2012/11/11 PHP
php实现的短网址算法分享
2014/06/20 PHP
PHP文件上传类实例详解
2016/04/08 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
Js获取事件对象代码
2010/08/05 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
js自定义回调函数
2015/12/13 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
Django中处理出错页面的方法
2015/07/15 Python
python方向键控制上下左右代码
2018/01/20 Python
Python实现二维数组输出为图片
2018/04/03 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
python opencv实现证件照换底功能
2019/08/19 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
pycharm快捷键汇总
2020/02/14 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
职业生涯规划书前言
2014/04/15 职场文书
党员目标管理责任书
2014/07/25 职场文书
酒店端午节活动方案
2014/08/26 职场文书
培训督导岗位职责
2015/04/10 职场文书
行政处罚告知书
2015/07/01 职场文书
2016新春团拜会致辞
2015/08/01 职场文书
Python深度学习之实现卷积神经网络
2021/06/05 Python