Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >jQuery:详解jQuery中的事件(一)

jQuery:详解jQuery中的事件(一)

作者头像
王金龙
发布于 2019-02-25 06:35:52
发布于 2019-02-25 06:35:52
1.9K00
代码可运行
举报
文章被收录于专栏:王金龙的专栏王金龙的专栏
运行总次数:0
代码可运行

之前用过一些jQuery的动画和特效,但是用到的部分也不超过10%的样子,感觉好浪费啊——当然浪费的不是jQuery,而是Web资源。后来就想深入研究下jQuery的内部机理,读过两遍jQuery源代码,但是自觉还差的好远,跟好多大神(比如阮一峰)的理解还是有很大差距。现在就一点一点积累自己的知识体系,记录自己学到的和自己所理解的jQuery。

  JavaScript和HTML之间的交互式通过用户和浏览器操作页面时引发的事件机制来处理的。当文档或者它的某些元素发生某些变化或操作时,浏览器就会自动生成一个事件。当然使用传统的JavaScript也能完成这些交互,但是jQuery增加兵扩展了基本的事件处理机制。jQuery不仅提供了更加优雅的事件处理语法,而且极大的增强了事件处理能力。

  一、jQuery中的事件

  1、加载DOM:

  执行时机:在常规的JavaScript中,通常使用window.onload方法,而在jQuery中,使用的是$(document).ready()方法,通过使用此方法,可以在DOM载入就绪时就对其进行操纵兵调用执行它所绑定的函数。

  注意以上两种方法的区别:

  window.onload方法是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行,也即在此时JavaScript才可以访问网页中的任何元素;

  $(document).ready()方法注册的事件处理程序,在DOM完全就绪时就可以被调用,也即此时网页的所有元素对jQuery都是可以访问的,但是并不是这些元素关联的文件都已经下载完毕。

  根据上述描述,显然使用jQuery的$(docum).ready()方法时会出现一个问题。由于在该方法内注册的事件,只要DOM就绪就会被执行,因此可能此时元素的关联文件未下载晚。例如与图片相关的HTML下载完毕,并且已经解析为DOM树了,但是很有可能图片还未完全加载,所以例如图片的高度和宽度等属性就不一定有效。

  要解决这个问题,可以使用jQuery中的另一个关于页面加载的方法——load()方法。load()方法会在元素的onload事件中绑定一个处理函数。如果处理函数绑定给window对象,则会在所有的内容(包括窗口、框架、对象和图像等)加载完毕后触发,出国处理函数绑定在元素上,则会在元素的内容加载完毕后触发。

  jQuery代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(window).load(function(){
   //code... 
})

  等价于JavaScript中的以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
window.onload = function(){
  //code...  
}

  多次调用:

window.onload方法是不能被多次调用的,因为JavaScript的onload事件一次只能保存对一个函数的引用,它会自动用后面的函数覆盖前面的函数,所以即使将上面代码中的window.load赋值两次,也只会执行后面的函数。所以如果想达到两个函数顺序触发的效果,只能使用下面的方法来实现——也即再创建一个新的JavaScript方法,JavaScript代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
window.load = function(){
  func1();
  func2();
}

  这种写法是可以解决一些问题的,但是如果有多个JavaScript文件,或者在团队开发中,每个文件都需要用到window.onload方法,这种情况下还用这种方法就非常麻烦了。

  jQuery的$(document).ready()方法就可以很好的解决这种问题——每次调用$(document).ready()方法都会在现有的行为上追加新的行为,这些行为函数会根据注册的顺序依次执行。例如,上面的JavaScript代码就可以用jQuery来很好的实现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function func1(){
  //code...
}
function func1(){
  //code...
}

//下面的jQuery代码就可以顺序执行上面的两个函数,并且如果还有其他的绑onload函数也可以这样绑定
$(document).ready(function(){
  func1();
});
$(document).ready(function(){
  func2();
});

  简写方式:几种等价的书写方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(document).ready(function(){
   //code... 
})
$(function(){
  //code...
})
//默认参数是document
$().ready(fucntion(){
  //code...
})

  2、事件绑定:文档装载完成了,接着就是为元素绑定事件来完成某些操作了,所使用的是bind()方法。bind()方法的调用格式为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bind(type, [data], fn);

  其中type是事件类型,包括:click,keypress,load,submit,dblclick,keydown,change,resize,mouseenter,keyup,scroll,focus,mouseleave,blur,unload等,也可以是自定义事件名称。第二个参数是可选参数,作为event.data属性值传递给事件对象的额外数据对象。第三个参数则是用来绑定的处理函数。举个实际的例子,下面网页中,单击“标题”链接将显示内容。

  HTML代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="container">
  <h4 class="head">jQuery事件机制</h4>
  <div class="content">
    jQuery是目前使用最广泛的javascript函数库。据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库。微软公司甚至把jQuery作为他们的官方库。
  </div>
</div>

  按照需求,需要完成以下几个步骤:

  (1)等待DOM装载完毕;

  (2)找到“标题”所在的元素,绑定click事件;

  (3)找到“内容”元素,将“内容”显示出来。

  根据分析的步骤,写出jQuery代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(function(){
    $("#container h4.head").bind("click", function(){
      $(this).next().show();    //获取并显示“内容”元素
    })
  })

  当然可以加强效果,并且改变绑定事件的类型,比如鼠标悬停时显示“内容”,鼠标离开时隐藏“内容”。jQuery代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(function(){
    $("#container h4.head").bind("mouseover", function(){
      $(this).next().show();    //获取并显示“内容”元素
    }).bind("mouseout", function(){
      $(this).next().hide();
    });
  })

  这里需要知道的一点是,jQuery中bind方法是可以多次调用的,并且可以简化为将上面的第二个bind去掉。

  明天继续完成jQuery事件的下半部分,包括的内容有合成事件、事件冒泡、移除事件等内容。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-04-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
jQuery学习笔记之DOM操作、事件绑定(2)
jQuery学习笔记之DOM操作、事件绑定(2) ————————————————————学习目录———————————————————————— 4.DOM操作 5.事件绑定
王小雷
2019/05/26
1.6K0
jquery $(document).ready()与window.onload的区别
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
2.4K0
window.onload 与 $(document).ready()比较
ready事件发生在加载HTML文档之后,而onload事件发生在稍后,此时所有内容(例如图像)也已加载。
IT工作者
2022/01/25
1.7K0
从零开始学 Web 之 jQuery(一)jQuery的概念,页面加载事件
JavaScript 开发的过程中,处理浏览器的兼容很复杂而且很耗时,于是一些封装了这些操作的库应运而生。这些库还会把一些常用的代码进行封装。
Daotin
2018/08/31
1.8K0
jQuery(事件和动画-事件绑定移除、动画)
①params:一组包含作为动画属性和终值的样式属性和及其值的集合(动画的目标样式);
全栈开发日记
2022/05/12
2.6K0
Js篇-面试题14-JavaScript 中的 window.onload 事件和 jQuery 的 ready 函数有何区别
执行时机: window.onload必须等待网页中所有内容加载完毕后(包括图片)才能执行,而$(document).ready()是网页中所有DOM结构绘制完毕后执行,可能DOM元素关联的东西并没有加载完,在DOM完全就绪时就可以被调用,此时,网页的所有元素对JQuery而言都是可以访问的,但是这并不意味着这些元素关联的文件都已经下载完毕
itclanCoder
2020/10/28
1.2K0
Js篇-面试题14-JavaScript 中的 window.onload 事件和 jQuery 的 ready 函数有何区别
好久不用 jQuery, 来复习一下
  jQuery 是一个优秀的 JavaScript 库,是一个由 JohnResig 创建于 2006 年 1 月的开源项目。现在的 jQuery 团队主要包括核心库、UI 和插件等开发人员以及推广和网站设计维护人员。团队中有 3 个核心人物:John Resig、Brandon Aaron 和 Jorn Zaefferer。   jQuery 凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript 开发人员遍历 HTML 文档、操作 DOM、处理事件、执行动画和开发 Ajax 的操作。其独特而又优雅的代码风格改变了 JavaScript 程序员的设计思路和编写程序的方式。
Demo_Null
2020/09/28
5.6K0
好久不用 jQuery, 来复习一下
JavaWeb(八)JQuery
jQuery 市场用得比较多两个框架: jQuery 比较适合做一些互联网 的应用(12306.com,蘑菇街,美丽说,聚美) extjs 比较适合做后台管理系统(电商(订单管理),银行,电信) 核心: 主要功能:javascript开发人员查找元素、操作DOM、处理事件、执行动画和开发Ajax的操作。优势:(宗旨:write less ,do more 写更少的代码,做更多的事情) 1:轻量级 (js 库非常小) 2:强大的选择器(获取页面上面的dom 元素 document.getElementByI
二十三年蝉
2018/02/28
1.9K0
锋利的jQuery系列<一>[通俗易懂]
jQuery是继Prototype之后又一个优秀的JavaScript库,是一个由John Resig创建于06年1月的开源项目。现在的jQuery主要包括核心库、UI、插件和jQuery Mobile这几大模块。
全栈程序员站长
2022/11/15
7310
[jQuery学习系列一]1-选择器与DOM对象
前言: 好久没有更新博客了, 最近想复习下 之前学过的JS的相关内容, 也算是自己的一种总结. 知识长时间不用就会忘记, 多学多记多用!! 下面的程序都可以在下面的网站进行在线调试:  http://
一枝花算不算浪漫
2018/05/18
3K0
Java与JQuery:探秘事件绑定、入口函数与样式控制
在现代的Web开发中,Java和JQuery是两个不可或缺的角色。Java为我们提供了强大的后端支持,而JQuery则是前端开发的得力助手。本篇博客将围绕Java和JQuery,深入探讨事件绑定、入口函数和样式控制,带你进入前端开发的奇妙世界。
繁依Fanyi
2023/11/12
2040
$(document).on和$('#idname').on和$(function(){ })区别
  在写前端的时候经常用到js或jquery语法,有时候傻傻分不清,现在将学习过程中遇到的总结一下。
全栈测试开发日记
2023/02/02
2.2K0
$(document).on和$('#idname').on和$(function(){ })区别
JavaScript 学习-35.jQuery 基础语法与事件
前言 jQuery 是一个轻量级的”写的少,做的多”的 JavaScript 库。极大地简化了 JavaScript 编程 jQuery 库包含以下功能: HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaScript 特效和动画 HTML DOM 遍历和修改 AJAX Utilities 环境准备 在网页中使用 jQuery 可以使用以下方法: 从 jquery.com 下载 jQuery 库 从 CDN 中载入 jQuery, 如从 Google 中加载 jQuery j
上海-悠悠
2022/05/31
2.1K0
JavaScript 学习-35.jQuery 基础语法与事件
【领会要领】web前端-轻量级框架应用(jQuery基础)
jquery的安装和语法,jquery的多种选择器,dom操作和jquery事件。
达达前端
2019/12/13
2.3K0
jQuery 快速入门教程
在使用jQuery之前,我们必须先了解什么是jQuery,它能够干什么(不然我们为啥要用它)。
全栈程序员站长
2022/09/02
14K0
第79天:jQuery事件总结(二)
       上一篇讲到jQuery中的事件,深入学习了加载DOM和事件绑定的相关知识,这篇主要深入讨论jQuery事件中的合成事件、事件冒泡和事件移除等内容。
半指温柔乐
2018/09/11
1.8K0
jQuery笔试题汇总整理--2018
1、最大的一点是页面无刷新,用户的体验非常好。 2、使用异步方式与服务器通信,具有更加迅速的响应能力。 3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。 4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。 ajax的缺点 1、ajax不支持浏览器back按钮。 2、安全问题 AJAX暴露了与服务器交互的细节。 3、对搜索引擎的支持比较弱。 4、破坏了程序的异常机制。 5、不容易调试。
用户1272076
2019/03/26
2.7K0
JavaScript之共享onload
我们知道,当我们将JS代码脚本放到<head></head>标签之间时,这是的js代码加载要先于DOM加载,而我们往往会在JS代码脚本中写一些获取DOM元素的代码,而此时的DOM是不完整的, 所以我们通常的解决方法是将函数放入到window.onload里面去,window.load事件是网页加载完毕时会触发的一个事件,如果将我们的函数与之绑定,我们的函数也会在页面加载完毕之后执行. 如下代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <
郑小超.
2018/01/24
8410
01-老马jQuery教程-jQuery入口函数及选择器
前言 这套jQuery教程是老马专门为寒门子弟而录制,希望大家看到后能转发给更多的寒门子弟。视频都是免费,请参考课程地址:https://chuanke.baidu.com/s5508922.html
老马
2017/12/20
2.5K0
jQuery onload与ready
jQuery是一种流行的JavaScript库,用于简化在网页中操作和处理HTML文档的过程。在jQuery中,有两个常用的事件处理方法,即$(document).ready()和$(window).on("load", function()),用于在页面加载时执行JavaScript代码。这两种方法在特定情况下有所不同。
堕落飞鸟
2023/05/18
8580
推荐阅读
相关推荐
jQuery学习笔记之DOM操作、事件绑定(2)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验