入口函数

   使用$(document).ready(()=>{})作为jQuery入口函数,与window.onload(()=>{})类似,但它不会等待图片等外部资源的加载完毕,而是在HTML文档页面渲染后就立刻执行入口函数内部代码。

<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script>
<script> $(document).ready(function () {
console.log($("button").get(0));
});
</script>
</head> <body>
<button type="button">点我</button>
</body> </html>

   也可以直接使用简写形式作为入口函数

<script>

	$(function () {
console.log($("button").get(0));
}) </script>

处理程序

绑定处理

   在jQuery中,对于某一对象事件的处理程序应当使用接口函数on()进行异步处理。

   on()接口不仅仅可以做当前目标元素的事件处理,也以根据事件冒泡行为做成事件代理形式。

   事件冒泡请参照以前的关于Js事件的文章:https://www.cnblogs.com/Yunya-Cnblogs/p/13531826.html

   与JavaScriptaddEventListener()事件监听类似,允许对同一事件目标的同一事件处理函数进行多次定义

   如果回调函数是一个普通函数,那么函数中this指向为事件目标元素本身

   如果回调函数是一个箭头函数,那么函数中this指向为windowundefined,此时应使用event.target获取事件目标。

<body>
<button type="button">按钮1</button>
<button type="button">按钮2</button>
</body>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script>
<script> $(function () {
$("button").on("click", function (jQevent) { // jQevent为事件对象
console.log($(this).text()); // 按钮1 按钮2
});
}) </script>

   利用事件冒泡特性,使用on()接口为未来元素的父级设置事件代理,可令未来元素的某一事件操作也具有对应的处理程序。

<body>
<ul>
<li>li1</li>
<li>li2</li>
<li>li3</li>
</ul>
</body>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script>
<script> $(function () {
// 委托的DOM 事件类型 事件目标 jQevent为事件对象
$("ul").on("click", "li", function (jQevent) {
console.log(jQevent)
console.log($(this).text());
}); $("ul").append("<li>li4</li>"); // 新增加的li本身并没有绑定任何事件,但由于事件代理给了父标签ul,故此li也能触发处理程序
}) </script>

移除处理

   使用off()接口在选择元素上移除一个或多个事件的事件处理函数。

<body>
<div style="width: 50px;height: 50px;background-color:red"></div>
<button type="button">点我面积增大</button>
<button type="button">点我移除事件</button>
</body>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script>
<script> $(function () {
// eq返回jQuery对象,get()返回DOM元素。所以用eq
$("button").eq(0).on("click", function (jQevent) { // jQevent为事件对象 $(this).prev().css({ "width": ($(this).prev().width() + 50) + "px", "height": ($(this).prev().height() + 50) + "px" });
}); $("button").eq(1).on("click", function (jQevent) { // jQevent为事件对象
$(this).prev().off("click");
$(this).prev().text("事件已移除");
});
}) </script>

   移除事件代理

<body>
<ul>
<li>li1</li>
<li>li2</li>
<li>li3</li>
</ul>
<button>点我移除ul委托事件</button>
</body>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script>
<script> $(function () {
// 委托的DOM 事件类型 事件目标 jQevent为事件对象
$("ul").on("click", "li", function (jQevent) {
console.log($(this).text());
}); $("button:first").on("click", function (jQevent) {
$(this).prev().off("click","li")
$(this).text("点击li不再显示");
})
}) </script>

其他绑定

   下面的这些接口不太常用,了解即可。

接口名称 描述
bind() 单独绑定,不支持事件代理
one() 绑定一次性事件,不支持事件代理
trigger() 行为执行绑定
triggerHandler() 默认行为与冒泡行为阻止绑定
toggle() 用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click事件。

   bind()

   以下示例将展示使用单独绑定根据点击来改变元素随机色

<body>
<div
style="background-color: red;color:white;height:100px;width: 100px;text-align: center;line-height: 100px;cursor: pointer;">
点我随机变色</div>
</body>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script>
<script> $(function () {
$("div").bind("click", function (jQevent) {
const one_number = Math.floor(Math.random() * (255 + 1));
const two_number = Math.floor(Math.random() * (255 + 1));
const three_number = Math.floor(Math.random() * (255 + 1)); this.style.backgroundColor = `rgb(${one_number},${two_number},${three_number})`;
});
}) </script>

   one()

   以下示例将展示使用单次绑定第一次点击时改变元素随机色

<body>
<div
style="background-color: red;color:white;height:100px;width: 100px;text-align: center;line-height: 100px;cursor: pointer;">
点我随机变色</div>
</body>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script>
<script> $(function () {
$("div").bind("click", function (jQevent) {
const one_number = Math.floor(Math.random() * (255 + 1));
const two_number = Math.floor(Math.random() * (255 + 1));
const three_number = Math.floor(Math.random() * (255 + 1)); this.style.backgroundColor = `rgb(${one_number},${two_number},${three_number})`;
});
}) </script>

   trigger()

   以下示例将展示使用trigger()对某一表单进行隐式提交。

<body>
<form action="#">
<p><input type="text" placeholder="用户名"></p>
<p><input type="text" placeholder="密码"></p>
</form>
</body>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script>
<script> $("form").trigger("submit"); </script>

事件对象

   每一次的事件触发都会产生一次事件对象,但jQuery中的事件对象与Js中的有所不同。

   jQuery中的事件对象是在原生的事件对象上的一次封装。

  

属性 描述
event.type 事件类型
event.target 事件目标对象,冒泡的父级通过该属性可以找到在哪个元素上执行了事件
event.currentTarget 当前执行事件的对象
event.timeStamp 事件发生时间
event.data 当前执行的处理器被绑定的时候,包含可选的数据传递给jQuery.fn.bind
event.delegateTarget 当currently-called的jQuery事件处理程序附加元素
event.namespace 当事件被触发时此属性包含指定的命名空间
event.pageX 鼠标相对于文档的左边缘的位置
event.pageY 鼠标相对于文档的顶部边缘的位置
event.result 这个属性包含了当前事件事件最后触发的那个处理函数的返回值,除非值是 undefined
event.which 针对键盘和鼠标事件,这个属性能确定你到底按的是哪个键或按钮。

冒泡行为与默认行为

   以下方法可用于解决事件的冒泡传递与一些元素的默认行为。

   对于一些特定的事件类型也可以在处理程序中使用retrun false来解决,但是个人不推荐

方法名 描述
event.preventDefault() 阻止默认事件行为的触发。
event.isDefaultPrevented() 根据事件对象中是否调用过 event.preventDefault() 方法来返回一个布尔值。
event.stopPropagation() 防止事件冒泡到DOM树上,也就是不触发的任何前辈元素上的事件处理函数。
event.isPropagationStopped() 根据事件对象中是否调用过 event.stopPropagation() 方法来返回一个布尔值。
event.stopImmediatePropagation() 推荐 阻止剩余的相同事件的处理函数执行,并且防止事件冒泡到DOM树上。
event.isImmediatePropagationStopped() 根据事件对象中是否调用过 event.stopImmediatePropagation() 方法来返回一个布尔值。

事件类型

事件名称 描述
未来事件  
ready 当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。即入口函数
鼠标事件  
click 进行单击触发
dblclick 进行双击触发
hover 鼠标悬停时触发
mousedown 鼠标指针移动到元素上方触发
mouseenter 鼠标指针穿过元素时触发,该事件大多数时候会与mouseleave 事件一起使用。
mouseleave 鼠标指针离开元素时触发,该事件大多数时候会与mouseenter 事件一起使用。
mousemove 鼠标指针在指定的元素中移动时,就会发生 mousemove 事件。
mouseout 鼠标指针从元素上移开时,发生 mouseout 事件。该事件大多数时候会与 [mouseover 事件一起使用。
mouseover 鼠标指针位于元素上方触发
mouseup 鼠标按钮在元素上放松时触发
focus 获得焦点时触发
focusin 获得焦点时触发,可以在父元素上检测子元素获取焦点的情况
focusout 失去焦点时触发
blur 失去焦点时触发
键盘事件  
keydown 键键按下触发,注释:如果在文档元素上进行设置,则无论元素是否获得焦点,该事件都会发生
keypress 键键按下触发,注释:如果在文档元素上进行设置,则元素必须获得焦点,该事件才会发生
keyup 按键松开触发
视窗事件  
resize 当调整浏览器窗口的大小时,发生 resize 事件。
scroll 当用户滚动指定的元素时,会发生 scroll 事件。
select 当 textarea 或文本类型的 input 元素中的文本被选择时,会发生 select 事件。
表单事件  
change 当元素的值发生改变时,会发生 change 事件。该事件仅适用于文本域(text field),以及 textarea 和 select 元素
submit 当提交表单时,会发生 submit 事件。

jQuery 事件操作的更多相关文章

  1. jQuery操作标签,jQuery事件操作,jQuery动画效果,前端框架

    jQuery操作标签 jQuery代码查找标签绑定的变量名推荐使用 $xxxEle 样式类操作 addClass();// 添加指定的CSS类名. removeClass();// 移除指定的CSS类 ...

  2. jQuery事件操作

    bind绑定事件 bind(type,data,fn) [参数描述] type (String) : 事件类型 data (Object) : (可选) 作为event.data属性值传递给事件对象的 ...

  3. jQuery——事件操作

    事件绑定 1.简单事件绑定 $("button").click(function () {})//可重复绑定,不会被层叠 2.bind():不推荐使用 $("button ...

  4. jQuery源代码学习之九—jQuery事件模块

    jQuery事件系统并没有将事件坚挺函数直接绑定在DOM元素上,而是基于事件缓存模块来管理监听函数的. 二.jQuery事件模块的代码结构 //定义了一些正则 // // //jQuery事件对象 j ...

  5. Jquery的事件操作和文档操作

    对于熟悉前端开发的小伙伴,相信对于Jquery一定不陌生,相对于JavaScript的繁琐,Jquery更加的简洁,当然简洁不意味着简单,我们可以使用Jquery完成我们想要实现全部功能,这里为小白们 ...

  6. [jQuery学习系列四 ]4-Jquery学习四-事件操作

    前言:今天看知乎偶然看到中国有哪些类似于TED的节目, 回答中的一些推荐我给记录下来了, 顺便也在这里贴一下: 一席 云集 听道 推酷 青年中国说 SELF格致论道 参考:http://www.365 ...

  7. Jquery基础之事件操作

    事件是用户操作时页面或页面加载时引发的用来完成javascript和HTML之间的交互操作.常见的元素点击事件.鼠标事件.键盘输入事件等,较传Javascript 相比JQuery增加并扩展了基本的事 ...

  8. 事件冒泡及事件委托的理解(JQuery Dom操作)

    jQuery事件冒泡: click mouseenter 等事件没有绑定 也会触发,只是触发后没有任何结果 子元素触发事件后,会把触发事件传递给父元素,那么父元素也会被触发. 不管有没有绑定事件,都会 ...

  9. JQuery操作样式以及JQuery事件机制

    1.操作样式     1.1 css的操作     功能:设置或者修改样式,操作的是style属性 操作单个样式 // name:需要设置的样式名称 // value:对应的样式值 // $obj.c ...

随机推荐

  1. 修改git上传代码的作者姓名

    本文参考https://www.cnblogs.com/weiaiqi/p/11842515.html 随着IT行业的不断壮大,开源的东西越来越多,使用git来进行代码管理的人自然也越来越多,而且很多 ...

  2. pandas_查看数据特征和统计信息

    # 查看数据特征和统计信息 import pandas as pd # 读取文件 dataframe = pd.read_excel(r'C:\Users\lenovo\Desktop\总结\Pyth ...

  3. Hexo 静态博客指南:建站教程(上)

    本文最初发布于我的个人博客Bambrow's Blog,采用 BY-NC-SA 许可协议,转载请注明出处.若有后续更新,将更新于原博客.欢迎去我的博客阅读更多文章! 本文详细记录一下站点建立过程,以便 ...

  4. PHP is_string() 函数

    is_string() 函数用于检测变量是否是字符串. PHP 版本要求: PHP 4, PHP 5, PHP 7高佣联盟 www.cgewang.com 语法 bool is_string ( mi ...

  5. PHP srand() 函数

    实例 播种随机数生成器: <?phpsrand(mktime());echo(rand());?>高佣联盟 www.cgewang.com 定义和用法 srand() 函数播种随机数生成器 ...

  6. 小甲鱼零基础汇编语言学习笔记第五章之[BX]和loop指令

         这一章主要介绍什么是[BX]以及loop(循环)指令怎么使用,loop和[BX]又怎么样相结合,段前缀又是什么鬼,以及如何使用段前缀.   1.[BX]的概念      [BX]和[0]类似 ...

  7. CF Contest 526 G. Spiders Evil Plan 长链剖分维护贪心

    LINK:Spiders Evil Plan 非常巧妙的题目. 选出k条边使得这k条边的路径覆盖x且覆盖的边的边权和最大. 类似于桥那道题还是选择2k个点 覆盖x那么以x为根做长链剖分即可. 不过这样 ...

  8. 2019 HL SC day10

    10天都过去了 4天都在全程懵逼.. 怎么可以这么难啊 我服了 现在想起依稀只记得一些结论 什么 反演? 什么后缀自动机?什么组合数的应用?什么神仙东西 ,不过讲课人的确都是神仙.(实名羡慕. mzx ...

  9. 面试必问的volatile关键字

    原文: 卡巴拉的树   https://juejin.im/post/5a2b53b7f265da432a7b821c 在Java相关的岗位面试中,很多面试官都喜欢考察面试者对Java并发的了解程度, ...

  10. 25-Object类的使用

    1.java.lang.Object类的说明: * 1.Object类是所Java类的根父类 * 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object ...