• jquery绑定事件以及js绑定事件


    jquery绑定事件:

    <div id="click1">bind事件</div><!--如果有动态元素,不能触发-->
    <div id="click2">one</div><!--只能点击一次-->
    <div id="click3">live</div><!--已经弃用-->
    <div id="click4">
    <div class="click4Child">delegate</div>
    </div>
    <div id="click5">
    <div class="click5Child">on</div>
    </div>
    对应的代码:

    //jquery绑定click事件的写法start
    $("#click1").bind("click",function() {
    alert("bind事件");
    });
    $("#click2").one("click",function() {
    alert("one事件");
    });
    /*$("#click3").live("click",function() {
    alert("live");
    });*/
    $("#click4").delegate(".click4Child","click",function() {
    alert("delegate");
    });
    $("#click5").on("click",".click5Child",function() {
    alert("on");
    });

    js绑定事件:

    <div id="click6">addEventListener</div>
    <div id="click7">click7</div>
    <div id="click8" onclick="click8()">click8</div>
    <div id="click9">
          <div class="click9Child1">child1
                <div class="click9Child2">child2
                     <div class="click9Child3">clild3</div>
                </div>
          </div>
    </div>
    <div id="click10">
          <div class="click10Child1">child1
                <div class="click10Child2">child2</div>
          </div>
    </div>
    对应的代码:

    //js事件绑定写法
    document.getElementById("click6").addEventListener("click",function() {
          alert("addEventListener");
    });//最后一个参数默认是false,表示冒泡;为true表示捕获
    document.getElementById("click7").onclick = function() {
          alert(1);
    }
    function click8() {
          alert("click8");
    }

    var click9 = document.getElementById("click9");
    var click9Child1 = document.getElementsByClassName("click9Child1")[0];
    var click9Child2 = document.getElementsByClassName("click9Child2")[0];
    var click9Child3 = document.getElementsByClassName("click9Child3")[0];

    click9Child1.addEventListener("click",function() {
         alert(1);
    });
    click9Child2.addEventListener("click",function() {
         alert(2);
    },true);
    click9Child3.addEventListener("click",function(event) {
         alert(3);
         //event.stopPropagation();//阻止冒泡
    });

    // 在做上述问题的时候,如果要点击child3时,出现的顺序是2,3,1.为什么呢?child1表示的是冒泡,child2表示的是捕获,child3表示的是冒泡。
    // 要点击child3,先看它父级的父级,从上到下的顺序是(child1,child2,child3),因为不管什么时候先执行捕获然后执行冒泡,所以结果排出来的顺序是(child2,child3,child1)。
    // 如果要点击child2,同样先看父级的父级,从上到下的顺序是(child1,child2),所以结果排出来的顺序是(2,1)
    //IE8以下不支持以上写法

    //下面我们来看支持IE的绑定事件的写法
    var click10 = document.getElementById("click10");
    var click10Child1 = document.getElementsByClassName("click10Child1")[0];
    var click10Child2 = document.getElementsByClassName("click10Child2")[0];

    click10.attachEvent("onclick",function() {
         alert("click10");
    });
    click10Child1.attachEvent("onclick",function() {
         alert("click10Child1");
    });
    click10Child2.attachEvent("onclick",function(event) {
          alert("click10Child2");
          event.cancelBubble = true; //阻止冒泡
    });


    下面来一个兼容所有浏览器的事件绑定的写法

    <!--兼容所有浏览器-->
    <div id="click11">
        <div class="click11Child1">child1
              <div class="click11Child2">child2</div>
        </div>
    </div>
    在写代码之前引用一个公共文件EventUtil.js,文件如下:

    var EventUtil = {
         addHandler: function(element,type,handler) {
              if (element.addEventListener) {
                  element.addEventListener(type,handler);
              } else if (element.attachEvent) {
                  element.attachEvent("on"+type,handler);
              } else {
                  element["on" + type] = handler;
              }
        },
        stopPropagation: function(event){
             if (event.stopPropagation){
                 event.stopPropagation();
              } else {
                 event.cancelBubble = true;
              } 
        }
    }

    var click11 = document.getElementById("click11");
    var click11Child1 = document.getElementsByClassName("click11Child1")[0];
    var click11Child2 =document.getElementsByClassName("click11Child2")[0];
    EventUtil.addHandler(click11,"click",function() {
         alert("click11");
    });
    EventUtil.addHandler(click11Child1,"click",function() {
          alert("click11Child1");
    });
    EventUtil.addHandler(click11Child2,"click",function(event) {
         alert("click11Child2");
         EventUtil.stopPropagation(event);
    });

    这些我只是写了给元素添加事件以及阻止冒泡的方法,后续如果有添加,会添加。如果有问题,麻烦指出。

  • 相关阅读:
    GOOGLE域名存在漏洞,可以用来建立钓鱼站点(目前已临时被封闭)
    今天的工作
    2006的最后一天,于2007年的第一天记录
    上班去
    顶你个肺
    勇气!
    东京审判
    远离我家
    8.3不仅仅是forfun
    我又对自己说,要好好写写我的文字了
  • 原文地址:https://www.cnblogs.com/xingzoudecd/p/8746190.html
Copyright © 2020-2023  润新知