28-jQuery-事件绑定【click() 、on()】、事件切换toggle()、样式控制

news/2024/7/10 23:37:28 标签: jquery, javascript, ecmascript

一、click() 方法

click() 方法是一种简洁的事件绑定方法,只能绑定 click 事件,并且只允许绑定一个处理程序,无法为同一个元素绑定多个处理程序。

javascript">$(selector).click(handler);

其中,selector 是需要绑定事件的元素;handler 是事件触发后要执行的函数,可以是预定义函数、匿名函数或命名函数。

javascript">//为 id 为 myBtn 的按钮添加一个 click 事件处理程序:
$('#myBtn').click(function() {
  console.log('按钮被点击了');
});

二、on()/off()方法

jQuery 事件绑定中,on() 方法用于为元素添加事件处理程序,off() 方法则用于移除绑定的事件处理程序。

1 on() 方法

on() 方法是 jQuery 中最常用且最通用的事件绑定方法,可以绑定多个事件类型,并为每个事件类型指定一个或多个处理程序。以下是 on() 方法的语法:

javascript">$(selector).on(event, childSelector, data, handler);
  • selector:需要绑定事件的元素,可以是任何选择器。
  • event:要绑定的事件类型,如 "click"、"mouseover"、"keydown" 等。
  • childSelector(可选):子选择器,如果指定了子选择器,则只有子元素触发该事件才会执行处理程序。
  • data(可选):传递给事件处理程序的额外数据。
  • handler:事件触发后要执行的函数,可以是预定义函数、匿名函数或命名函数。

以下代码将为所有的 p 标签添加 click、mouseover 和 mouseout 三个事件的处理程序:

javascript">$('p').on({
  click: function() {
    console.log('点击事件已触发');
  },
  mouseover: function() {
    console.log('鼠标移动到此标签上');
  },
  mouseout: function() {
    console.log('鼠标离开此标签');
  }
});

2 off() 方法

off() 方法用于移除之前绑定的事件处理程序,它需要传递一个或多个事件类型参数,并为这些事件类型制定要移除的处理程序。

javascript">​​​​​​​$(selector).off(event, childSelector, handler);
  • selector:需要移除事件处理程序的元素,可以是任何选择器。
  • event(可选):要移除的事件类型,如 "click"、"mouseover"、"keydown" 等。如果不指定该参数,则移除所有事件处理程序。
  • childSelector(可选):子选择器,如果指定了子选择器,则只有子元素触发该事件才会移除处理程序。
  • handler(可选):需要移除的事件处理程序,如果不指定该参数,则移除所有的处理程序。

以下代码将为 id 为 myBtn 的按钮添加一个 click 事件处理程序,并在 5 秒钟后移除该事件处理程序:

javascript">$('#myBtn').on('click', function() {
  console.log('按钮被点击了');
  $(this).off('click'); // 移除 click 事件处理程序
});

setTimeout(function() {
  $('#myBtn').off('click'); // 移除所有 click 事件处理程序
}, 5000);

三、事件切换 toggle()

jQuery 中事件切换操作通常使用 toggle() 方法来实现。该方法可以在两个或多个处理程序之间切换,同时也支持一个回调函数。

javascript">$(selector).toggle(handler1, handler2, ..., handlerN);
  • selector:需要切换事件处理程序的元素,可以是任何选择器。
  • handler1、handler2、...、handlerN:每次触发事件时要执行的函数。只有两个处理程序时会切换,多个处理程序则依次循环执行。

以下代码演示了点击按钮时在两个处理程序之间切换:

javascript">$('#btn').toggle(function() {
  console.log('第一个事件处理程序已执行');
}, function() {
  console.log('第二个事件处理程序已执行');
});

点击按钮时会先触发第一个处理程序,再次点击则会触发第二个处理程序,依次循环执行。

除了上述用法外,toggle() 方法还支持传递一个回调函数作为参数,该函数会在所有处理程序执行完毕后被调用。例如:

javascript">$('#btn').toggle(function() {
  console.log('第一个事件处理程序已执行');
}, function() {
  console.log('第二个事件处理程序已执行');
}, function() {
  console.log('所有处理程序已完成');
});

当每个处理程序执行完毕后,会触发最后一个回调函数。

需要注意的是,toggle() 方法在 jQuery 版本 1.9 之后已被废弃,推荐使用更加灵活的 on() 方法来实现事件处理程序的切换操作。

四、事件方法 

方法描述
bind()向匹配元素附加一个或更多事件处理器
blur()触发、或将函数绑定到指定元素的 blur 事件
change()触发、或将函数绑定到指定元素的 change 事件
click()触发、或将函数绑定到指定元素的 click 事件
dblclick()触发、或将函数绑定到指定元素的 double click 事件
delegate()向匹配元素的当前或未来的子元素附加一个或多个事件处理器
die()移除所有通过 live() 函数添加的事件处理程序。
error()触发、或将函数绑定到指定元素的 error 事件
event.isDefaultPrevented()返回 event 对象上是否调用了 event.preventDefault()。
event.pageX相对于文档左边缘的鼠标位置。
event.pageY相对于文档上边缘的鼠标位置。
event.preventDefault()阻止事件的默认动作。
event.result包含由被指定事件触发的事件处理器返回的最后一个值。
event.target触发该事件的 DOM 元素。
event.timeStamp该属性返回从 1970 年 1 月 1 日到事件发生时的毫秒数。
event.type描述事件的类型。
event.which指示按了哪个键或按钮。
focus()触发、或将函数绑定到指定元素的 focus 事件
keydown()触发、或将函数绑定到指定元素的 key down 事件
keypress()触发、或将函数绑定到指定元素的 key press 事件
keyup()触发、或将函数绑定到指定元素的 key up 事件
live()为当前或未来的匹配元素添加一个或多个事件处理器
load()触发、或将函数绑定到指定元素的 load 事件
mousedown()触发、或将函数绑定到指定元素的 mouse down 事件
mouseenter()触发、或将函数绑定到指定元素的 mouse enter 事件
mouseleave()触发、或将函数绑定到指定元素的 mouse leave 事件
mousemove()触发、或将函数绑定到指定元素的 mouse move 事件
mouseout()触发、或将函数绑定到指定元素的 mouse out 事件
mouseover()触发、或将函数绑定到指定元素的 mouse over 事件
mouseup()触发、或将函数绑定到指定元素的 mouse up 事件
one()向匹配元素添加事件处理器。每个元素只能触发一次该处理器。
ready()文档就绪事件(当 HTML 文档就绪可用时)
resize()触发、或将函数绑定到指定元素的 resize 事件
scroll()触发、或将函数绑定到指定元素的 scroll 事件
select()触发、或将函数绑定到指定元素的 select 事件
submit()触发、或将函数绑定到指定元素的 submit 事件
toggle()绑定两个或多个事件处理器函数,当发生轮流的 click 事件时执行。
trigger()所有匹配元素的指定事件
triggerHandler()第一个被匹配元素的指定事件
unbind()从匹配元素移除一个被添加的事件处理器
undelegate()从匹配元素移除一个被添加的事件处理器,现在或将来
unload()触发、或将函数绑定到指定元素的 unload 事件

五、样式控制

方法描述
animate()对被选元素应用“自定义”的动画
clearQueue()对被选元素移除所有排队的函数(仍未运行的)
delay()对被选元素的所有排队函数(仍未运行)设置延迟
dequeue()运行被选元素的下一个排队函数
fadeIn()逐渐改变被选元素的不透明度,从隐藏到可见
fadeOut()逐渐改变被选元素的不透明度,从可见到隐藏
fadeTo()把被选元素逐渐改变至给定的不透明度
hide()隐藏被选的元素
queue()显示被选元素的排队函数
show()显示被选的元素
slideDown()通过调整高度来滑动显示被选元素
slideToggle()对被选元素进行滑动隐藏和滑动显示的切换
slideUp()通过调整高度来滑动隐藏被选元素
stop()停止在被选元素上运行动画
toggle()对被选元素进行隐藏和显示的切换

http://www.niftyadmin.cn/n/341664.html

相关文章

微信小程序 nodejs+vue+uniapp付费自习室图书馆教室座位系统-

系统分为用户和管理员角色 管理员的主要功能有: 1.管理员输入账户登陆后台 2.个人中心:管理员修改密码和账户信息 3.用户管理:对注册的用户信息进行添加,删除,修改,查询 4.自习室管理:对系统的自…

每日学术速递5.20

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Improved baselines for vision-language pre-training 标题:改进视觉语言预训练的基线 作者:Enrico Fini, Pietro Astolfi, Adriana Romero-Soriano, Jak…

区块链商业模式

1. 引言 web2 vs web3: 基于区块链的商业模式有: 1)Token Economy-Utility Token商业模式2)Blockchain As A Service(Baas)商业模式3)Blockchain-Based Software Products商业模式4&#xf…

Java操作MongoDB

上一篇文章: http://blog.csdn.net/gaowenhui2008/article/details/40045719 介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们对MongoDB有了全面的认识和理解。现在我们就用Java来操作MongoDB的数据。 开发环境: System&#xff1a…

【C++刷题集】-- day2

目录 选择题 单选 编程题 OR62 倒置字符串⭐ 【题目解析】 【解题思路1】 【解题思路2】 【解题思路3】 排序子序列⭐ 【题目解析】 【解题思路】 选择题 单选 1、使用printf函数打印一个double类型的数据,要求:输出为10进制,输…

基于DBSCAN密度聚类的风电-负荷场景削减方法

​目录 ​ 1 主要内容 基于密度聚类的数据预处理: 场景提取: 算法流程: 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序复现文章《氢能支撑的风-燃气耦合低碳微网容量优化配置研究》第三章内容,实现的是基于DBSCAN…

github某0day漏洞投毒与钓鱼样本分析

前言 近日,烽火台实验室监测到多起针对安全人员的钓鱼攻击。其中一例利用MS Office Word 0DAY进行钓鱼,在github.com和Telegram群组中公开0DAY利用程序,其中并没有包含真正的利用程序,但是却捆绑了木马。运行后下载和执行木马程序…

QT学习记录(三)绘图

按照下面两个教程学习 QT学习教程(全面)_Strive--顾的博客-CSDN博客_qt学习 天山老妖S的博客_QT开发(3)_51CTO博客 1、绘图 VC项目右键增加QT GUI Class,在QT Designer中编辑DlgDraw.ui 在DlgDraw中重载函数 void DlgDraw::paintEvent(Q…