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

Posted always_strive

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
});

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


















































































































以上是关于jquery绑定事件以及js绑定事件的主要内容,如果未能解决你的问题,请参考以下文章

JQuery对象和JS对象区别转换以及JQuery事件绑定入口函数样式控制

jQuery 入门 -- 事件 事件绑定与事件委托

jQuery实现获取绑定自定义事件元素的方法

jQuery绑定点击事件和改变事件的几种方式以及多个元素绑定多个事件

jQuery 判断元素上是不是绑定了事件

js和jQuery中的事件绑定与普通事件