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 JSON操作入门实例
Apr 16 Javascript
解析jquery中的ajax缓存问题
Dec 19 Javascript
文本域光标操作的jQuery扩展分享
Mar 10 Javascript
js实现带圆角的多级下拉菜单效果
Aug 28 Javascript
js实现动态创建的元素绑定事件
Jul 19 Javascript
jquery.picsign图片标注组件实例详解
Feb 02 jQuery
微信小程序实现星星评价效果
Nov 02 Javascript
Vue插槽原理与用法详解
Mar 05 Javascript
详解微信小程序支付流程与梳理
Jul 16 Javascript
js实现窗口全屏示例详解
Sep 17 Javascript
element-ui如何防止重复提交的方法步骤
Dec 09 Javascript
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
Apr 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编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
php中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
php微信开发之谷歌测距
2018/06/14 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
Python中decorator使用实例
2015/04/14 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
建筑文秘专业个人求职信范文
2013/12/28 职场文书
银行演讲稿范文
2014/01/03 职场文书
咖啡蛋糕店创业计划书
2014/01/28 职场文书
补充协议书范本
2014/04/23 职场文书
学校督导评估方案
2014/06/10 职场文书
运动会1000米加油稿
2015/07/21 职场文书
Linux安装apache服务器的配置过程
2021/11/27 Servers