花公子丶 2015-10-05 11:18 采纳率: 50%
浏览 3707
已结题

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执行两次,
    说明事件重复绑定了,但是这该怎么解决?是我的代码有问题?
    *****/
  • 写回答

3条回答 默认 最新

  • Robot-S 2015-10-05 11:20
    关注

    前几天在看《jquery基础教程》,看到事件委托的时候,关于live()方法讲的不是很详细,就去搜了一下关于live()和delegate()的。 然后在一处看到live()已经被移除了,囧,然后去看了最新的jq源码,果然被移除了,现在是1.9.1版本,不知道live()是在之前哪个版本被移除的,惭愧啊,之前都没留意。 看源码发现bind()和delegate()都是由on()实现的。on()......
    答案就在这里:jQuery事件绑定.on()
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?