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 相关文章推荐
JSuggest自动匹配下拉框使用方法(示例代码)
Dec 27 Javascript
jQuery DOM操作实例
Mar 05 Javascript
JS实现向表格行添加新单元格的方法
Mar 30 Javascript
jQuery中的基本选择器用法学习教程
Apr 14 Javascript
js添加事件的通用方法推荐
May 15 Javascript
使用JS实现导航切换时高亮显示的示例讲解
Aug 22 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
Apr 10 Javascript
bootstrap-table+treegrid实现树形表格
Jul 26 Javascript
微信小程序工具函数封装
Oct 28 Javascript
jQuery编写QQ简易聊天框
Aug 27 jQuery
vscode 调试 node.js的方法步骤
Sep 15 Javascript
vue中如何自定义右键菜单详解
Dec 08 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
function.inc.php超越php
2006/12/09 PHP
对Session和Cookie的区分与解释
2007/03/16 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
JQUERY获取form表单值的代码
2010/07/17 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
python+opencv+caffe+摄像头做目标检测的实例代码
2018/08/03 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
Django xadmin安装及使用详解
2020/10/26 Python
scrapy-splash简单使用详解
2021/02/21 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
怎么写好自荐信
2013/10/30 职场文书
金融专业毕业生推荐信
2013/11/26 职场文书
应届护士求职信范文
2014/01/26 职场文书
项目投资建议书
2014/05/16 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
标准毕业生自荐信
2014/06/24 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书