28-jQuery-事件绑定click() 、on()和事件切换toggle()

news/2024/7/10 23:13:59 标签: jquery, javascript, ecmascript

1、click() 方法

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

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

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

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

2、on()/off()方法

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

2.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.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);

3、事件切换 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() 方法来实现事件处理程序的切换操作。


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

相关文章

项目实战:构建一个Web应用(下篇)

在上篇文章中,我们已经完成了待办事项Web应用的后端服务器搭建和前端页面的基本框架。在本篇文章中,我们将继续完善前端页面,实现与后端服务器的交互。 目录 ## 6. 优化前端 ### 6.1 添加加载动画 ### 6.2 错误处理 ## 7. 部署应用

【数据结构】线性表 ⑤ ( 双循环链表 | 双循环链表特点 | 双循环链表插入操作处理 | 代码示例 - 使用 Java 实现 双循环链表 )

文章目录 一、双循环链表二、双循环链表特点三、双循环链表插入操作处理四、代码示例 - 使用 Java 实现 双循环链表 一、双循环链表 " 双循环链表 " 是 在 单循环链表 的基础上 , 在每个 节点 中 , 新增一个 指针 , 指向 该节点 的 前驱节点 ; 双向循环链表 每个 节…

印度和巴基斯坦网络优势和劣势的综合研究

由于网络空间在当今世界的重要性日益增加,各国已将网络安全放在首位并开发技能来保护其重要基础设施、数字资产和私人数据。 没有豁免适用于印度和巴基斯坦,这两个拥有动荡历史的核武器邻国。 这项研究深入比较了他们的网络能力,并评估了巴…

队列实现栈(你看我讲的是不是最细的就完了)

最伟大的成就往往起源于最强烈的热情。 -- 诺曼文森特皮尔目录 🗼一.队列实现栈 🍅二.使用两个队列来模拟实现栈 🍋1.栈结构体包含两个队列 🍒2.创建一个结构体的指针 🍂3.myStackPush入栈操…

ESP32-C3入门教程 问题篇⑱——VSCode ESP-IDF Monitor device 波特率不对导致乱码

文章目录 一、前言二、发现问题三、分析问题一、前言 本文基于VS Code IDE进行编程、编译、下载、运行等操作 基础入门章节请查阅:ESP32-C3入门教程 基础篇①——基于VS Code构建Hello World 教程目录大纲请查阅:ESP32-C3入门教程——导读 二、发现问题 升级了VSCode,没注意…

碳交易机制下考虑需求响应的综合能源系统优化运行(matlab代码)

目录 1 主要内容 架构模型: 需求响应模型: 目标函数: 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序复现文献《碳交易机制下考虑需求响应的综合能源系统优化运行》,解决碳交易机制下考虑需求响应的综合能源系统优化…

chatgpt赋能Python-python3_打印

Python3 打印:一篇介绍性SEO文章 如果你是一名Python编程工程师,那么你一定知道在Python中打印是一项基本技能。在Python3中,打印已经发生了一些变化,本文将介绍Python3中打印的新特性和使用方法,并为您提供一些最佳实…

辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-智能避让

书接上回 2.3.5智能避让 系统通过车辆上搭载的雷达、摄像头等传感器、V2X设备等,实时感知探测车辆周围存在的障碍物。对自车道前方静止的车辆、缓速的车辆、遗落物、道路凸起、道路凹坑、施工、事故、窄路等影响通行的障碍,以及邻车道加塞的车辆、横向靠近的车辆、较长的货车…