jquery中click等事件绑定及移除的几种方法小结
作者:mdxy-dxy 发布时间:2024-10-04 08:58:34
绑定click事件
一:直接在html标签里添加事件
HTML元素行间事件(这种写法是JavaScript原生事件)
<input id="btn" type="button" value="点我" onclick="test();" />
<script>
function test() {
alert("行间事件");
}
</script>
缺点:html与js紧密耦合
二:使用jq的click方法绑定
$("#btn").click(function(){
alert("jquery使用click绑定事件");
})
三:使用jq的bind方法绑定
$("#btn").bind("click",function(){
alert("jquery使用bind绑定事件");
})
四:使用jq的on方法绑定
$("#btn").on("click",function(){
alert("jquery使用on绑定事件");
})
五:使用jq的可绑定动态元素的on方法绑定
$("body").on("click","#btn", function () {
alert("jquery使用on可绑定动态元素事件");
})
点击按钮,这五个事件都会执行,执行顺序:1>2=3=4>5
其中行间事件onclick这种写法的事件最先触发,其次是监听事件click方法绑定,这种写法和写法三的on方法、方法四的bind方法是相同的,他们三者间的顺序取决于代码的顺序,谁在前那么谁就先绑定,方法五也是使用了on方法,但是这种写法可以给动态元素绑定事件,比如我们通过发送服务器请求动态加载到页面的元素,加载后的元素默认是没有绑定事件的,但是使用方法五可以成功为这种动态元素绑定事件,这种写法其实是发生的事件委托,监听父元素body,然后代替子元素执行click事件,所以是执行顺序在前面四种后。
移除click事件
方式一的移除:
<input id="btn" type="button" value="点我" onclick="test();" />
function test() {
alert("行间事件");
}
这种写法其实可以理解为:
<input id="btn" type="button" value="点我" />
/*点击的时候执行函数*/
document.getElementById("btn").onclick = test;
/*定义函数*/
function test() {
alert("行间事件");
}
一句话搞定
那么移除事件就很简单了,一句代码搞定:
document.getElementById("btn").onclick = null;
或者使用jq的方法移除
$("#btn").prop("onclick",null);
若使用多种写法绑定多个click事件则移除所有的click事件:
$("#btn").prop("onclick",null).off("click");
写法二、三、四的移除:
$("#btn").on("click",function(){
alert("jquery使用on绑定事件");
})
$("#btn").click(function(){
alert("jquery使用click绑定事件");
})
$("#btn").bind("click",function(){
alert("jquery使用bind绑定事件");
})
直接使用unbind方法
$("#btn").unbind("click");
使用off方法
$("#btn").off("click");
写法五使用on绑定动态元素的移除:
这种写法使用unbind无效,因为它绑定的对象是父元素body,那么需要用配对的函数off移除
$("body").off("click","#btn");
需要注意的是:事件委托写法的解绑的元素需要与事件绑定的目标元素一致(即案例中body,#btn需要一一对应),否则不生效。
自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品;off() 方法是 unbind()、die() 和 undelegate() 方法的新的替代品。使用起来更方便,推荐使用。
其中关于off函数的参数说明如下:
/*如果不传参,会移除所有的事件*/
$("#btn").off();
/*如果传递一个参数,会移除这个类型的所有事件*/
$("#btn").off('click');
/*如果传递两个参数,则移除这两个参数指定的事件*/
$("#btn").off('click',test);
jQuery怎么删除点击事件?
要删除一个元素的点击事件,可以使用jQuery的off()方法,该方法用于解除元素绑定的事件。
以下是一个示例代码,其中包括了如何添加点击事件和如何删除点击事件:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>删除点击事件示例</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
// 给按钮绑定一个点击事件
$("#myBtn").on("click", function(){
alert("Hello World!");
});
// 给删除按钮绑定一个点击事件
$("#deleteBtn").on("click", function(){
// 解除按钮的点击事件
$("#myBtn").off("click");
});
});
</script>
</head>
<body>
<button id="myBtn">点击我</button>
<button id="deleteBtn">删除点击事件</button>
</body>
</html>
在上面的代码中,首先使用on()方法给按钮绑定了一个点击事件,当用户点击按钮时,会弹出一个消息框。
然后,又使用on()方法给另一个按钮绑定了一个点击事件,当用户点击这个按钮时,会解除之前按钮的点击事件,从而实现了删除点击事件的效果。


猜你喜欢
- 解决方式一:import matplotlib#1. 获取matplotlibrc文件所在路径matplotlib.matplotlib_f
- 问题描述:在django中创建了一个app,而且在app中自定义创建了几个数据表,在同步的时候系统自带的表可以成功,但是models中的没有
- 目录开发环境主要文件:main.pyapp_main_window.pyTips多控件可以存在list中QApplication与QWidg
- 本文实例讲述了Python判断文本中消息重复次数的方法。分享给大家供大家参考,具体如下:#coding:gbk'''
- 如下所示:import cv2import numpy as npbins = np.arange(256).reshape(256,1)d
- 如下所示:import numpy as np# 等差数列print(np.linspace(0.1, 1, 10, endpoint=Tr
- 前言:处理图片需要,需把图片都转换成1920*1280的大小, python实现很方便,需要导入图片处理的Image包和匹配的glob包,很
- 1 前言很多程序都要求用户输入某种信息,程序一般将信息存储在列表和字典等数据结构中。用户关闭程序时,就需要将信息进行保存,一种简单的方式是使
- 项目环境:python3.6一、项目结构二、数据集准备数据集准备分为两步:获取图片.提取人脸.1、获取图片首先可以利用爬虫,从百度图片上批量
- Oracle的分析函数功能非常强大,工作这些年来经常用到。这次将平时经常使用到的分析函数整理出来,以备日后查看。我们拿案例来学习,这样理解起
- 以a=[1,2,3] 为例,似乎使用del, remove, pop一个元素2 之后 a都是为 [1,3],如下:>>>
- https://discuss.pytorch.org/t/how-to-modify-the-final-fc-layer-based-o
- 内容摘要:本文介绍了asp使用正则表达式自动解析远程图片地址并下载保存的方法,值得收藏!一、使用正则表达式Regexp匹配取得原页中的图片的
- pycharm中导入selenium报错现象: pycharm中输入from selenium import webdriver, sele
- 前言WHL文件是以Wheel格式保存的Python安装包,Wheel是Python发行版的标准内置包格式。在本质上是一个压缩包,WHL文件中
- Web网站可用性的关键指标是速度,更确切地说,是页面能以多快的速度出现在访问者的浏览器窗口里。影响速度的因素有很多种,包括Web服务器的速度
- 前言上次做了用于输入样例格式修改,相当于测试用例的过滤器,这次我们使用类似的思路来做一个对于像C++代码中块注释的过滤器。/** * Def
- 操作系统上正确配置python环境之后,pyuic5也是一个可以识别的命令行指令到.ui文件的目录下,直接cmd进入,输入pyuic5 -o
- 索引下推(index condition pushdown )简称ICP,在Mysql5.6的版本上推出,用于优化查询。在不使用ICP的情况
- YEAR() 函数返回一个整数值,它表示指定日期的年份,一般使用为:Year(时间),如:YEAR('2023-03-14