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 相关文章推荐
支持ie与FireFox的剪切板操作代码
Sep 28 Javascript
Javascript 二维数组
Nov 26 Javascript
Javascript base64编码实现代码
Dec 02 Javascript
js判断样式className同时增加class或删除class
Jan 30 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
Jan 26 Javascript
微信小程序入门教程
Nov 18 Javascript
jQuery实现checkbox列表的全选、反选功能
Nov 24 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
Dec 08 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
Feb 04 Javascript
微信小程序开发图片拖拽实例详解
May 05 Javascript
vue+iview 实现可编辑表格的示例代码
Oct 31 Javascript
vue中各种通信传值方式总结
Feb 14 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脚本数据库功能详解(上)
2006/10/09 PHP
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
解析argc argv在php中的应用
2013/06/24 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
javascript+mapbar实现地图定位
2010/04/09 Javascript
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
Python实现一个简单的MySQL类
2015/01/07 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
python的mysqldb安装步骤详解
2017/08/14 Python
python psutil库安装教程
2018/03/19 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
python如何爬取网页中的文字
2020/07/28 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
雪山饭庄的创业计划书范文
2014/01/18 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
研讨会致辞
2015/07/31 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书