JS中的事件(对象,冒泡,委托,绑定)

- 事件,是文档或浏览器窗口中发生的一些特定的交互瞬间,JS与HTML之间的交互是通过事件实现的

对于web应用来说,有下面这些代表性事件:点击事件,鼠标移动,按下键盘等等

- 事件,是用户和浏览器之间的交互行为

我们可以在事件对应的属性中设置一些js代码,当事件被触发时,这些代码会执行

文档的加载:

浏览器在加载一个页面时,是按照自上而下的顺序加载的,

读取到一行就运行一行,在代码执行时,页面还没有加载

将js代码编写到页面的下面,确保页面加载完毕以后再执行js代码

window.onload 确保页面加载完成以后执行,可以保证代码执行时所有DOM对象已经加载完毕了

clientWidth/clientHeight:

- 可以获取元素的可见宽度和高度

- 这些属性都是不带px的,返回都是一个数字,可以直接进行计算

- 会获取元素宽度和高度,包括内容区和那边距

- 这些属性都是只读的,不能修改

事件对象:

当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实參传递进响应函数

在事件对象中封装了当前事件相关的一切信息,比如:鼠标的坐标,键盘哪个按键被按下

 <div id="areaDiv">
 </div>
 <br>
 <br>
 <div id="showMsg">
 </div>
 <script>
  /**
   * 当鼠标在areaDiv中移动时,在showMsg来显示鼠标的坐标
   onmousemove
   - 该事件将会在鼠标在元素中移动时被触发
   */
   var area=document.getElementById(‘areaDiv‘)
   var show=document.getElementById(‘showMsg‘)if(!event){event=window.event}//event=event||window.event
   area.onmousemove=function(event){
/**
 * clientX可以获取鼠标指针的水平坐标
 clientY可以获取鼠标的垂直坐标,在ie8中不兼容
 */
 show.innerHTML=‘x=‘+event.clientX+‘,Y=‘+event.clientY
   }
 </script>

??:

在ie8中,响应函数被触发时,浏览器不会传递事件对象

在ie8及以下的浏览器中,是将事件对象作为window对象的属性保存的

事件冒泡:

所谓冒泡就是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发

在开发中大部分情况冒泡都是有用的,如果不希望发生事件冒泡可以通过事件对象来取消

  <div id="box1">
        我是box1
        <span id=‘s1‘>我是span</span>
    </div>
    <script>
    var s1=document.getElementById(‘s1‘);
    var box1=document.getElementById(‘box1‘);
    s1.onclick=function(event){
        event=event||window.event
        alert(‘s1 here‘)
        event.cancelBubble=true
    }
    box1.onclick=function(){
        event=event||window.event
        alert(‘box1 here‘)
        event.cancelBubble=true//取消冒泡
    }
    document.body.onclick=function(){
        alert(‘body here‘)
    }
    </script>

原文地址:https://www.cnblogs.com/yuan233/p/10381317.html

时间: 2024-08-29 01:25:43

JS中的事件(对象,冒泡,委托,绑定)的相关文章

zepto.js中tap事件阻止冒泡的方法

最近在弄一个手机版的网站,本来想用jQuery Mobile,但文件太大了,所以用了zepto.js 由于移动网页中使用click事件会有延迟,所以就用上了zepto.js中的tap事件. 使用click事件可以使用stopPropagation来阻止冒泡,但tap使用该方法无效 现在我需要实现这样一个效果:点击a.btn这个按钮,然后显示div.panel,当我点击非div.panel时隐藏div.panel $("a.btn").on("tap",functio

js中的事件 bom对象 dom对象.

3.事件 什么是事件?为什么使用事件? 我们学习事件首先了解一些概念 事件源 事件 监听器 事件源:事件的源头(也就是这个事件是由某某触发的,那么我们就管其叫事件源) 监听器:监听事件发生的组件.那么监听器要想监听事件是否发生,必须注册监听(绑定监听) js中常用的事件 1.onclick 鼠标点击某个对象 我们在开发中一般会对按钮,文本框或radio checkbox等进行onclick操作. 2.onblur 失去焦点 3.onfocus 获去焦点 4.onchange 改变域的内容 针对于

JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象

   前   言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学,经过初步的学习,会对这一门语言有了一定深入的了解,也会感受到这一门语言的强大之处.希望各位同学通过一定的学习,会得到等大的收获. 因为是最后一篇所以内容可能有点多,希望各位同学能够慢慢看,细细看,让我们一起学习,一起进步,一起感受JS的魅力. 一函数 函数的声明及调用 1.函数的声明格式: func

js中的事件,内置对象,正则表达式

[JS中的事件分类] 1.鼠标事件: click/dbclick/mouseover/mouseout/mousemove/mousedown/mouseup 2.键盘事件: keydown: 键盘按下去触发 keypress: 键盘按下并松开的瞬间触发 keyup: 键盘抬起时触发 [注意事项:(了解)] ① 执行顺序: keydown--keypress--keyup ② 长按时,会循环不断的执行keydown-keypress ③ 有keydown事件,不一定有keyup事件(事件触发过程

js事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象

事件对象    在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息.包括导致事件的元素.事件的类型,以及其他与特定事件相关的信息.例如,鼠标操作导致的事件对象中,会包含鼠标位置的信息,而键盘操作导致的事件对象中,会包含与按下的键有关的信息.所有浏览器对象都支持event对象,但支持方式不同. DOM中的事件对象 兼容DOM的浏览器会将一个event对象传入到事件处理程序中.无论指定事件处理程序时使用什么方法(DOM0级或DOM2级),都会传入event

看懂此文,不再困惑于 JS 中的事件设计

看懂此文,不再困惑于 JS 中的事件设计 今天刚在关注的微信公众号看到的文章,关于JS事件的,写的很详细也很容易理解,相关的知识点都有总结到,看完就有种很舒畅的感觉,该串起来的知识点都串起来了.反正一字节:爽. 作者:aitangyong 链接:blog.csdn.net/aitangyong/article/details/43231111 抽空学习了下javascript和jquery的事件设计,收获颇大,总结此贴,和大家分享. (一)事件绑定的几种方式 javascript给DOM绑定事件

从零开始的JS生活(二)——BOM、DOM与JS中的事件

上回书说道,JS中变量.运算符.分支结构.循环和嵌套循环等内容.本回就由本K给大伙唠唠JS中的BOM.DOM和事件. 一."花心大萝卜"--BOM 1.震惊,FFF团为何对BOM举起了火把--BOM简介 BOM(Browser Object Model) 是指浏览器对象模型,在JS中BOM是个不折不扣的花心大萝卜,因为它有很多个对象,其中代表浏览器窗口的Window对象是BOM的"正室".也就是最重要的,其他对象都是正室的下手.或者叫侧室也不足为过. 2.细数BOM

JS中的事件以及DOM 操作

[DOM树节点] DOM节点分为三大节点:元素节点,文本节点,属性节点. 文本节点,属性节点为元素节点的两个子节点通过getElment系列方法,可以去到元素节点 [查看节点] 1 document.getElementById("div1")  通过ID获取唯一的节点  多个同名ID只会取到第一个 2 getElmentsName   通过Name取到一个数组,包含1到多个节点   使用方式   通过循环,取到每一个节点  循环次数从0开始,<数组 length [查看和设置属

DOM 以及JS中的事件

[DOM树节点] DOM节点分为三大节点:元素节点,文本节点,属性节点. 文本节点,属性节点为元素节点的两个子节点通过getElment系列方法,可以去到元素节点 [查看节点] 1 document.getElementById("div1")  通过ID获取唯一的节点  多个同名ID只会取到第一个 2 getElmentsName   通过Name取到一个数组,包含1到多个节点   使用方式   通过循环,取到每一个节点  循环次数从0开始,<数组 length [查看和设置属