• jquery 事件,注册 与重复事件处理


    jquery有时候会出现重复注册一个事件的问题,导致点击一个事件,这个事件被重复执行,也就是触发事件的次数有几次,

    那么这个事件就会被执行叠加重复几次。

    我这边做的一个项目,在某个页面初始化的时候,给一个控件注册了一个事件,后来发现,进入几次这个页面,因为进入页面会执行一次注册,这个事件就会被注册几次,被重复执行,没有覆盖。

    上网查询了一下,总结了以下几种情况:

    1,通过 on方法注册的事件,每次的注册不会把原来的方法覆盖掉。会以队列的形式保存起来
    点击的时候,触发事情会一个个按注册的顺序执行。

    function initOnEvent(){
    //为id为onWayToEvent 按钮注册点击事件
    $("#onWayToEvent").on("click",function(){
    alert("this is one on event")
    });
    $("#onWayToEvent").on("click",function(){
    alert("this is two on event")
    });
    $("#onWayToEvent").on("click",function(){
    alert("this is three on event")
    });
    }

    2,通过bind的方法多次注册事件。通过 jquery 的bind方法多次注册的方法也是一样,不会把原来的方法覆盖了,也是把方法以
    队列的形式保存起来,触发事件后按注册次序逐个执行。

    function initBindEvent(){
    //为id为bindWayToEvent 的按钮注册点击事件
    $("#bindWayToEvent").bind("click",function(){
    alert("this is registry event by bind. one")
    });
    
    $("#bindWayToEvent").bind("click",function(){
    alert("this is registry event by bind. two")
    });
    
    $("#bindWayToEvent").bind("click",function(){
    alert("this is registry event by bind. three")
    });
    }
    </div>

    3,通过click方法多次注册事件。通过 jquery 的click方法多次注册的方法也是上面的效果一样 。

    function initClickvent(){
    $("#clickWayToEvent").click(function(){
    alert("this is registry event by click. one");
    });
    
    $("#clickWayToEvent").click(function(){
    alert("this is registry event by click. two");
    });
    $("#clickWayToEvent").click(function(){
    alert("this is registry event by click. three");
    });
    }

    4,通过live 方法多次注册事件

    要怎么样才能把前面的事件给覆盖掉,只保留最后注册的事件方法?

    1,通过unbind,bind方法进行事件的唯一注册

    $("#oneEvnetByBind").unbind("click").bind("click",function(){
    alert("only you !!!!!!!");
    });

    2,通过 die live 方法进行事件的唯一加载

    $("#oneEvnetByDieLive").die().live("click",function(){
    
    alert("the one of you !!!!!!");
    });

     3,off() 方法通常用于移除通过 on() 方法添加的事件处理程序。

    $("button").click(function(){
    $("p").off("click");
    });
  • 相关阅读:
    记录使用cx_Freeze打包Python成exe可执行程序
    jquery plug-in DataTable API中文文档参考
    java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/xxx/lib/arm/liblame.so: has text relocations
    CocoaPods的安装及使用
    Android 贝塞尔曲线的浅析
    GUI学习中错误Exception in thread "main" java.lang.NullPointerException
    线程
    12月13日
    今天开始学习java编程
    UVA10140 Prime Distance
  • 原文地址:https://www.cnblogs.com/alsf/p/6936545.html
Copyright © 2020-2023  润新知