原文地址:http://www.111cn.net/wy/jquery/47597.htm

绑点击事件这个是jquery一个常用的功能,如click,unbind等等这些事件绑定事情,但还有很多朋友不知道,下面我来给大家介绍jQuery绑定和解绑点击事件及重复绑定解决办法,有需要了解的同学可参考。

先简单说下jQuery绑定和解绑点击事件的方法,直接上代码:

$("#element").click(function(){}); //绑定点击事件函数
$("#element").unbind();        //解绑点击事件
$("#element").click(function(){});  //绑定其它函数

即,要对一个绑定过点击事件的元素绑定其它函数,需先对其解绑。

上面的代码看起来好简单,但是实际应用中却要复杂的多。举一个项目中的实例吧。

两个显示标签云的DIV,DIV1显示选中的标签,DIV2显示可选的标签。DIV2中的任一个标签被点中后会从DIV2中消失并添加到DIV1中,再在DIV1点击它时,它又会回到DIV2。两个DIV中的标签总数、单个标签的内容保持不变。这个效果我花了差不多一个半小时才搞定,就是因为对jQuery绑定和解绑点击事件理解的不到位。

我最开始的理解是:当一个标签从DIV1中移除并添加到DIV2中时,其原来绑定的所有事件都会消失,我可以从DIV2中析取这个标签并给它绑定新的点击事件。结果是:再点击它时它并没有回到DIV1,而是还是在DIV2中,只是位置被移到了最后。我误以为这个标签还属于DIV1,殊不知不是DIV的归属问题,而是点击事件的绑定问题。

总结还是那句话:要对一个绑定过点击事件的元素绑定其它函数,需先对其解绑。

一$.fn.live 重复绑定

解决:使用die()方法,在live()方法绑定前,将此元素上的前面被绑定的事件统统解除,然后再通过live()方法绑定新的事件。

//先通过die()方法解除,再通过live()绑定$(“#selectAll”).die().live(“click”,function(){//事件运行代码});

二click等事件

解决:使用unbind("click")方法先解除绑定的事件再绑定新事件,即在给对象绑定事件之前先移除该对象上的原有事件
完整测试代码:

jQuery绑定和解绑点击事件及重复绑定解决办法的更多相关文章

  1. jquery点击事件失效原因和解决办法

    在使用jQuery绑定点击事件的时候,有时候会遇到点击无效,这种情况大多出现在动态添加元素的时候 例如:给demo里添加li元素给li绑定点击事件 $("#demo").appen ...

  2. Iphone上对于动态生成的html元素绑定点击事件$(document).click()失效解决办法

    在Iphone上,新生成的DOM元素不支持$(document).click的绑定方法,该怎么办呢? 百度了N久都没找到解决办法,在快要走投无路之时,试了试Google,我去,还真找到了,歪国人就是牛 ...

  3. IOS7 UITableView一行滑动删除后 被删除行的下一行的点击事件将被忽略解决办法

    - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSI ...

  4. jQuery on()方法绑定动态元素的点击事件无响应的解决办法

    $('#check_all').on('click' , function(){ alert(1); }); $("#yujinlist").append(html); count ...

  5. android ListView中button点击事件盖掉onItemClick解决办法

    ListView 1.在android应用当中,很多时候都要用到listView,但如果ListView当中添加Button后,ListView 自己的 public void onItemClick ...

  6. IScroll中div点击事件触发两次解决办法

    1.网上的同学说的,直接修改源代码,但是这种方法可能会影响到现有的程序. 搜索onBeforeScrollStart方法,将其中的preventDefault禁止掉搜索_end方法,将其中模拟clic ...

  7. 前端 -----jQuery的事件绑定和解绑

    11-jQuery的事件绑定和解绑   1.绑定事件 语法: bind(type,data,fn) 描述:为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数. 参数解释: type (S ...

  8. python 全栈开发,Day55(jQuery的位置信息,JS的事件流的概念(重点),事件对象,jQuery的事件绑定和解绑,事件委托(事件代理))

    一.jQuery的位置信息 jQuery的位置信息跟JS的client系列.offset系列.scroll系列封装好的一些简便api. 一.宽度和高度 获取宽度 .width() 描述:为匹配的元素集 ...

  9. jQuery的事件绑定和解绑

    1.绑定事件 $('获取的标签对象').bind('要操作的方法,  {操作的内容  是字典的形式},function(){} ') 语法: bind(type,data,fn) 描述:为每一个匹配元 ...

随机推荐

  1. Linux安装模式AppImage,Flatpak,Snap整理

    本文只谈Linux世界用户较多的前2大主要分支, RedHat Red Hat Enterprise Linux 简称RHEL rpm (RedHat, CentOS, Fedora, Oracle. ...

  2. 服务器cpu负载过高问题排查

    https://blog.csdn.net/MrZhangXL/article/details/77711996 第一步 :执行top命令,查出当前机器线程情况 top - 09:14:36 up 1 ...

  3. servlet创建项目过程中,servlet内容重写的两种搭建,tomcat的配置,class的存放位置,web.xml的搭建等注意事项与易错点

    运行一个servlet项目:需要做这些前提工作: 1.配置tomcat,在server选项卡的设置也就基本的设置,HTTP port与JMX port等端口号:基本都是默认的.这里需要注意的是,有的教 ...

  4. oracle-闪回技术2

    闪回版本查询,用到了附加日志 闪回事务查询 http://blog.csdn.net/laoshangxyc/article/details/12405459 这个博客的备份与恢复可以参考 ##### ...

  5. apt-get update 与 apt-get upgrade 的区别

    总而言之,update是更新软件列表,upgrade是更新软件:所以,这两命令都是一块用,update后再upgrade. update 是更新 /etc/apt/sources.list 和 /et ...

  6. 简单的user-based协同过滤算法示例代码

    #构造一份打分数据集1 users = {"小明": {"中国合伙人": 5.0, "太平轮": 3.0, "荒野猎人" ...

  7. Jmeter录制脚本过程及Could not create script recorder报错、您的连接不是私密连接报错

    转载自    https://www.cnblogs.com/wwho/p/7173172.html Jmeter录制脚本过程及Could not create script recorder报错.您 ...

  8. 具有 Button 风格的 Panel

    unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  9. Docker Compose 配置文件详解

    先来看一份 docker-compose.yml 文件,不用管这是干嘛的,只是有个格式方便后文解说: version: '2' services: web: image: dockercloud/he ...

  10. win7环境下安装composer

    以前python有pip,但是PHP一直没有好的包管理工具,不过现在php也有比较好的包管理工具了,那就是composer 1:下载地址:https://getcomposer.org/downloa ...