js添加事件的方法,javascript中如何使用事件处理程序

  js添加事件的方法,javascript中如何使用事件处理程序

  本教程运行环境:windows7系统,javascript1.8.5版本1.8.5,戴尔G3电脑。

  一、addEventListener()和removeEventListener()讲解

  AddEventListener()和removeEventListener()用于处理指定和删除事件处理程序的操作。

  它们都接受三个参数:如addEventListener(事件名,事件处理程序,布尔值);(注意:事件名称不包含“开”,如“点击”)

  当前版本的可以省略第三个参数,默认值为false。

  示例:

  若要在主体上添加事件处理程序,可以使用以下代码:

  document . body . addevent listener( touch move ,function (event) {

  event . prevent default();

  },假);通过addEventListener()添加的事件处理程序只能使用removeEventListener()删除;移除时传入的参数与添加处理程序时使用的参数相同。这也意味着不能删除通过addEventListener()添加的匿名函数。

  

错误用法示例:

   document . body . addevent listener( touch move ,function (event) {

  event . prevent default();

  },假);

  document . body . removeeventlistener( touch move ,function (event) {

  event . prevent default();

  },假);在此示例中,使用addEventListener()添加一个事件处理程序。虽然调用removeEventListener(0)看似使用了相同的参数,但实际上第二个参数与addEventListener()中传递的完全不同。传递的removeEventListener()中的事件处理程序函数必须与传递的addEventListener()中的函数相同。

  正确用法示例:

  函数体滚动(事件){

  event . prevent default();

  }

  document . body . addevent listener( touch move ,bodyScroll,false);

  document . body . removeeventlistener( touch move ,bodyScroll,false);重写后的示例在addEventListener()和removeEventListener()中使用了相同的函数。

  共享函数不能带参数。不正确用法的例子:

  函数体滚动(事件){

  event . prevent default();

  }

  document . body . addevent listener( touch move ,bodyScroll(),false);

  document . body . removeeventlistener( touch move ,bodyScroll(),false);总结:

  1:绑定和释放同一个事件需要通用的函数;以及不带 on 的unbinding事件,即onclick写成click。

  2:共享函数不能有参数;

  二、addEventListener()与removeEventListener()的第三个参数详解

  布尔值为真,表示事件处理程序在捕获阶段被调用;也就是说,最不特定的节点首先接收事件,而最特定的节点最后接收事件。

  如果为false,则在冒泡阶段调用事件处理程序;就是先找到指定的位置,由最具体的元素接收,然后一步步扩散到最不具体的元素的节点(文档)。

  DOM事件流程如图所示(截自javascript高级编程):

  从图中可以看出,捕获过程先于冒泡过程,即真的触发序列先于假的触发序列。

  示例测试

  HTML内容:

  !声明文档类型

  html lang=en

  头

  meta charset=UTF-8

  将事件添加到标题取消绑定事件/标题

  /头

  身体

  p id=out

  p最外面/p

  p id=中间

  P id=inner 最里面的/p

  /p

  /p

  /body

  /htmljs内容:(case 1)addevent listener的第三个参数有两种情况:ture false,所以有2*2*2=8种情况。

  结论:

  1.1.true的触发序列总是在false之前。

  2.如果都为真,外层会在内层之前触发。

  3.如果它们都为假,则内部触发器在外部触发器之前。

  【推荐学习:javascript高级教程】以上是javascript如何添加和删除事件的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: