JavaScript

超轻量级php框架startmvc

jQuery事件多次绑定与解绑问题实例分析

更新时间:2020-08-15 17:06:01 作者:startmvc
本文实例分析了jQuery事件多次绑定与解绑问题。分享给大家供大家参考,具体如下:jQuery事

本文实例分析了jQuery事件多次绑定与解绑问题。分享给大家供大家参考,具体如下:

jQuery事件绑定很常见,相信大家经常会用到clickfocusblur等事件,但是如果对控件的某个事件绑定多个方法会是怎样的结果呢,覆盖、累加、或其他效果?今天我就来验证一下这个疑问并说说如何解绑。

一、jQuery事件多次绑定


<head>
 <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
 <script type="text/javascript">
 $(document).ready(function () {
 //第二次绑定
 $("#btnAdd").click(function () {
 alert("bind click1");
 });
 //第三次绑定
 $("#btnAdd").on("click", function () {
 alert("bind click2");
 });
 //第四次绑定
 $("#btnAdd").bind("click", function () {
 alert("bind click3");
 });
 });
 function add1() {
 alert("add1()");
 }
 </script>
</head>
<body>
 <h2>UserController->Index</h2>
 <!--第一次绑定-->
 <input type="button" id="btnAdd" name="btnAdd" value="Add" onclick="add1()" />
</body>

验证结果:对控件的某个事件进行多次绑定效果会叠加,截图如下:

二、jQuery事件解绑

既然能绑定事件,那应该也能对事件解绑,下面展示解绑的方法:


<head>
 <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
 <script type="text/javascript">
 $(document).ready(function () {
 $("#btnAdd").click(function () {
 alert("bind click1");
 });
 $("#btnAdd").on("click", add2);
 $("#btnAdd").bind("click", add3);
 });
 function add1() {
 alert("add1()");
 }
 function add2() {
 alert("bind click2");
 }
 function add3() {
 alert("bind click3");
 }
 function cancelBind() {
 //不指定方法名则解绑click事件对应的所有方法,标签内onclick设置的方法仍会执行
 //$("#btnAdd").off("click");
 //$("#btnAdd").unbind("click");
 //解绑click事件对应的add2方法
 $("#btnAdd").off("click", add2);
 //$("#btnAdd").unbind("click", add3);
 }
 </script>
</head>
<body>
 <h2>UserController->CancelBind</h2>
 <input type="button" id="btnAdd" name="btnAdd" value="Add" onclick="add1()" />
 <input type="button" id="btnCancelBind" name="btnCancelBind" value="CancelBind" onclick="cancelBind()" />
</body>

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。

jQuery 事件 多次绑定 解绑