zoukankan      html  css  js  c++  java
  • js中的解绑事件

    //解绑事件:
    /*
    * 注意:用什么方式绑定事件,就应该用对应的方式解绑事件
    * 1.解绑事件
    * 对象.on事件名字=事件处理函数--->绑定事件
    * 对象.on事件名字=null;
    * 2.解绑事件
    * 对象.addEventListener("没有on的事件类型",命名函数,false);---绑定事件
    * 对象.removeEventListener("没有on的事件类型",函数名字,false);
    * 3.解绑事件
    * 对象.attachEvent("on事件类型",命名函数);---绑定事件
    * 对象.detachEvent("on事件类型",函数名字);
    *
    *
    * */

    页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>title</title>
    
    </head>
    
    <script >
    	function  my$(id){
    	return document.getElementById(id);
    }
    	//设置任意元素的中间的文本内容
    function setInnnerText(element,text) {
        if(typeof element.textContent=="undefined"){
            element.innerText=text;
        }else{
            element.textContent=text;
        }
    }
    	
    </script>
    <body>
    <input type="button" value="创建一个p" id="btn"/>
    哈哈哈
    <input type="button" value="创建二个p" id="btn2"/>
    <div id='dv'> </div>
    </html>
    

     

    绑定和解绑的兼容性代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>title</title>
    <script >
    	function  my$(id){
    	return document.getElementById(id);
    }
    	//设置任意元素的中间的文本内容
    function setInnnerText(element,text) {
        if(typeof element.textContent=="undefined"){
            element.innerText=text;
        }else{
            element.textContent=text;
        }
    }
    	
    </script>
    </head>
    <body>
    <input type="button" value="按钮" id="btn1"/>
    <input type="button" value="干掉第一个按钮的事件" id="btn2"/>
    
    <script>
    
      //绑定事件的兼容
      function addEventListener(element,type,fn) {
        if(element.addEventListener){
          element.addEventListener(type,fn,false);
        }else if(element.attachEvent){
          element.attachEvent("on"+type,fn);
        }else{
          element["on"+type]=fn;
        }
      }
      //解绑事件的兼容
      //为任意的一个元素,解绑对应的事件
      function removeEventListener(element,type,fnName) {
        if(element.removeEventListener){
          element.removeEventListener(type,fnName,false);
        }else if(element.detachEvent){
          element.detachEvent("on"+type,fnName);
        }else{
          element["on"+type]=null;
        }
      }
      function f1() {
        console.log("第一个");
      }
      function f2() {
        console.log("第二个");
      }
      addEventListener(my$("btn1"),"click",f1);
      addEventListener(my$("btn1"),"click",f2);
      my$("btn2").onclick=function () {
        removeEventListener(my$("btn1"),"click",f1);
      };
    
    
    </script>
    </body>
    </html>
    

      

    第一种方式是常用的

    my$("btn").onclick=function(){
    	console.log("aa");
    }
    my$("btn").onclick=null;
    

      

    第二种方式是常用的(火狐谷歌)

    /第二种方式支持谷歌和火狐,不支持ie8
      function f1() {
        console.log("第一个");
      }
      function f2() {
        console.log("第二个");
      }
      my$("btn").addEventListener("click",f1,false);
      my$("btn").addEventListener("click",f2,false);
    
      //点击第二个按钮把第一个按钮的第一个点击事件解绑
      my$("btn2").onclick=function () {
        //解绑事件的时候,需要在绑定事件的时候,使用命名函数
        my$("btn").removeEventListener("click",f1,false);
      };
    

      

    第三种方式是常用的(IE8)

    //第三种支持ie8
        function f3() {
        console.log("第一个");
      }
      function f4() {
        console.log("第二个");
      }
      my$("btn").attachEvent("onclick",f3);
      my$("btn").attachEvent("onclick",f4);
    
      my$("btn2").onclick=function () {
          my$("btn").detachEvent("onclick",f3);
      };
    

      

     

  • 相关阅读:
    【IDEA】项目最好强制 utf-8,换行符强制 Unix格式,制表符4个空格
    【Maven】有关 snapshots、releases 的说明
    【Maven】与私服有关的本地操作(上传、拉取jar包;版本发布)
    【Maven】nexus 安装(基于docker)
    【Maven】maven命令(编译、打包、安装、发布)区别
    【Linux、Centos7】添加中文拼音输入
    生成器、列表推导式、生成器表达式
    列表:python基础数据类型
    数据类型之间转化、字符串学习
    while 循环、格式化输出、运算符
  • 原文地址:https://www.cnblogs.com/liushisaonian/p/9363396.html
Copyright © 2011-2022 走看看