重复绑定-jquery on重复事件绑定

问题描述

jquery on重复事件绑定
    var insertPrivilegeB=
    {
        execute:function()
        {
            $.ajax
            ({
                url: "/SSH/ajaxGetPrivilegeBAction",
                type:"POST",
                dataType:"json",
                success:function(ajaxData)
                {
                    var map=getPrivilegeBMap(ajaxData);
                  /**这里绑定了事件,调用下面的reflesh时候alert("hh")将被调用两次*/
                    $("#privilegeManage").off("click",".open_or_close_privilegeB")
                    .on("click",".open_or_close_privilegeB",function (event)
                    {
                                alert("hh");
                                insertPrivilegeB.openOrClosePrivilegeB($(this),map);
                    });
                },
                error:function(data)
                {
                    alert("数据异常!");
                }
            });
        }
    };

    var reflesh=function()
  {
        insertPrivilegeB.execute();
  };
    /****两个方法的运行:刚刚开始直接运行insertPrivilegeB.execute();运行正常。
    alert("hh")只执行一次。当点击刷新按钮则执行reflesh,此时alert执行两次,
    说明事件重复绑定了,但是这该怎么解决?是我的代码有问题?
    *****/

解决方案

前几天在看《jquery基础教程》,看到事件委托的时候,关于live()方法讲的不是很详细,就去搜了一下关于live()和delegate()的。 然后在一处看到live()已经被移除了,囧,然后去看了最新的jq源码,果然被移除了,现在是1.9.1版本,不知道live()是在之前哪个版本被移除的,惭愧啊,之前都没留意。 看源码发现bind()和delegate()都是由on()实现的。on()......
答案就在这里:jQuery事件绑定.on()
----------------------

解决方案二:

直接用.click()不要on()

解决方案三:

刷新按钮先unbind click再绑定click

时间: 2024-07-28 17:33:20

重复绑定-jquery on重复事件绑定的相关文章

JQuery中DOM事件绑定用法详解

 在文档加载完成后,如果打算为元素绑定事件来完成某些操作,则可以使用bind()方法来对匹配元素进行特定事件的绑定,bind()方法的调用格式为: bind( type [, data] , fn); bind()方法有3个参数,说明如下. 第1个参数是事件类型,类型包括:blur.focus.load.resize.scroll.unload.click.dblclick.mousedown.mouseup.mousemove.mouseover.mouseout.mouseenter.mou

JQuery中DOM事件绑定用法详解_jquery

本文实例讲述了JQuery中DOM事件绑定用法.分享给大家供大家参考.具体分析如下: 在文档加载完成后,如果打算为元素绑定事件来完成某些操作,则可以使用bind()方法来对匹配元素进行特定事件的绑定,bind()方法的调用格式为: bind( type [, data] , fn); bind()方法有3个参数,说明如下. 第1个参数是事件类型,类型包括:blur.focus.load.resize.scroll.unload.click.dblclick.mousedown.mouseup.m

jQuery 文本框事件绑定与取消代码

jquery 绑定事件 目前1.7以上,jquery的事件绑定已经用on替换了原来的bind: 区别:(个人理解)bind是一次绑定事件到每一个子节点:on是只绑定到父节点,然后冒泡到各个子节点: 用法:bind  代码如下 复制代码 一个事件,一个方法:$(".class input").bind('click',function(e){...;e.stopPropagation;}) 两个事件,一个方法:$(".class input").bind('click

jQuery新的事件绑定机制on()示例应用_jquery

今天浏览jQuery的deprecated列表,发现live()和die()在里面了,赶紧看了一下,发现从jQuery1.7开始,jQuery引入了全新的事件绑定机制,on()和off()两个函数统一处理事件绑定.因为在此之前有bind(), live(), delegate()等方法来处理事件绑定,jQuery从性能优化以及方式统一方面考虑决定推出新的函数来统一事件绑定方法并且替换掉以前的方法. on(events,[selector],[data],fn) events:一个或多个用空格分隔

关于jQuery新的事件绑定机制on()的使用技巧_jquery

今天浏览jQuery的deprecated列表,发现live()和die()在里面了,赶紧看了一下,发现从jQuery1.7开始,jQuery引入了全新的事件绑定机制,on()和off()两个函数统一处理事件绑定.因为在此之前有bind(), live(), delegate()等方法来处理事件绑定,jQuery从性能优化以及方式统一方面考虑决定推出新的函数来统一事件绑定方法并且替换掉以前的方法. on(events,[selector],[data],fn) events:一个或多个用空格分隔

关于jquery input textare 事件绑定及用法学习_jquery

(1)jquery 绑定事件 目前1.7以上,jquery的事件绑定已经用on替换了原来的bind: 区别:(个人理解)bind是一次绑定事件到每一个子节点:on是只绑定到父节点,然后冒泡到各个子节点: 用法:bind 一个事件,一个方法:$(".class input").bind('click',function(e){...;e.stopPropagation;}) 两个事件,一个方法:$(".class input").bind('click mouseov

关于Jquery中的事件绑定总结_jquery

前言 因为项目中经常会有利用jquery操作dom元素的增删操作,所以会涉及到dom元素的绑定事件方式,简单的归纳一下bind,live,delegate,on的区别,以便以后查阅,也希望该文章日后能帮助到朋友,如有不妥之处,希望指出.交流. 一.bind() 简要描述 bind()向匹配元素添加一个或多个事件处理器. 使用方式 $(selector).bind(event,data,function) event:必需项:添加到元素的一个或多个事件,例如 click,dblclick等: 单事

jQuery事件绑定方法学习总结(推荐)_jquery

对于jQuery中的事件绑定方法,主要有on().bind().delegate().live()等这几个方法.之前都是之前拿过来用,也知道有这么几个方法,但是不清楚这几个事件绑定方法之间的区别.平时用的最多的是on方法,今天打算整理一下. bind方法 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatibl

JavaScript 事件绑定

  事件绑定分为两种:一种是传统事件绑定(内联模型,脚本模型),一种是现代事件绑定(DOM2级模型).现代事件绑定在传统绑定上提供了更强大更方便的功能.   一.传统事件绑定的问题 传统事件绑定有内联模型和脚本模型,内联模型我们不做讨论,基本很少去用.先来看一下脚本模型,脚本模型将一个函数赋值给一个事件处理函数. var box = document.getElementById('box');//获取元素 box.onclick = function () {//元素点击触发事件 alert(