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 相关文章推荐
Wordpress ThickBox 添加“查看原图”效果代码
Dec 11 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
Apr 12 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
Oct 09 Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 Javascript
jQuery提交多个表单的小技巧
Jul 27 Javascript
js实现兼容IE和FF的上下层的移动
May 04 Javascript
JavaScript实现点击文字切换登录窗口的方法
May 11 Javascript
jquery显示loading图片直到网页加载完成的方法
Jun 25 Javascript
jQuery 的 ready()的纯js替代方法
Nov 20 Javascript
学习使用jQuery表单验证插件和日历插件
Feb 13 Javascript
vue element upload组件 file-list的动态绑定实现
Oct 11 Javascript
原生JS实现萤火虫效果
Mar 07 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
JpGraph php柱状图使用介绍
2011/08/23 PHP
php 搜索框提示(自动完成)实例代码
2012/02/05 PHP
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
Jquery cookie操作代码
2010/03/14 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
javascript常用函数(2)
2015/11/05 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
Python实现SMTP发送邮件详细教程
2021/03/02 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
房地产开盘策划方案
2014/02/10 职场文书
公司年会主持词
2014/03/22 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
大学新生入学教育方案
2014/05/16 职场文书
停车场管理协议书范本
2014/10/08 职场文书
居安思危观后感
2015/06/11 职场文书
判断Python中的Nonetype类型
2021/05/25 Python
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python