如 onclick、onmouseover,要带 on callback: 事件处理函数,事件发生会调用该回调函数 IE9 之前的 IE 不支持,对应有 attachEvent(),用法和 addEventListener...,弹出顺序4、3、2、1 有些事件是没有冒泡的,如 blur, focus, mouseenter, onmouseleave 例如: const btn = document.getElementById...()之前会依次弹出 1、2、3、4,在按钮绑定的事件中,加上之后只会弹出 1 事件委托 事件委托也被称为事件代理,在 jQuery 里面称为事件委派。...事件委托原理 不需要给每个子结点单独设置事件监听器,而是把事件监听器设置在其父节点上,然后利用冒泡原理去影响子节点。...不识别功能键,如ctrl、shift等 执行顺序是: keydown-->keypress-->keyup 首先,keyup 是弹起时才会触发的,所以顺序是最后的,所以只需要记得 keydown 优先级更高就行
缺点: 普通的事件注册不能做事件委托,且无法实现事件解绑,需要借助其他方法。...2. selector: 元素的子元素选择器 。 3. fn:回调函数 即绑定在元素身上的侦听函数。 on() 方法优势1: 可以绑定多个事件,多个处理事件处理程序。...on() 方法优势3: 动态创建的元素,click() 没有办法绑定事件, on() 可以给动态生成的元素绑定事件 $(“div").on("click",”p”, function(){...}); // 2.点击的删除按钮,可以删除当前的微博留言li // 原来的方法 此时的click不能给动态创建的a标签添加事件 因为上面添加的a还没有触发..."click", "li"); // 解绑事件委托 如果有的事件只想触发一次, 可以使用 one() 来绑定事件。
有些事件没有冒泡:onblur、onfocus、onmouseenter、onmouseleave 事件对象 event对象代表事件的状态,比如键盘按键的状态、鼠标的位置、鼠标按钮的状态。...', function () { alert('document'); }) 事件委托(代理、委派) 事件冒泡本身的特性...一个小区有100个快递,快递员一个一个送太麻烦,就委托到小区一个代取点,然后让买家自行领取。 事件委托也称为事件代理,在jQuery里面称为事件委派。...三个事件执行顺序:keydown---keypress---keyup 键盘事件对象 键盘事件对象中的keyCode属性可以得到相应键的ASSCII码值 document.addEventListener...{ alert('你按下的是a键'); } else { alert('你没有按下a键')
('keyup' , function(e) { console.log('键盘弹起' , e.key) }) 事件流 指的是事件完整执行过程中的流动路径 两个阶段:先捕获在冒泡 捕获阶段是...('我是father') }) son.addEventListener('click' , function() { console.log('我是son') }) 点击 son: 注意...: 鼠标经过事件: mouseover 和 mouseout 会有冒泡效果 mouseenter 和 mouseleave 没有冒泡效果 (推荐) 事件捕获 概念: 从DOM的根元素开始去执行对应的事件...('我是father') },true) son.addEventListener('click' , function() { console.log('我是son') },true)...('p') newP.innerHTML = '新建的p' box.appendChild(newP) }) 事件委托 // 事件委托做法: // 做法:把事件委托注册给父元素(祖先元素
@click="demo" 和 @click="demo($event)" 效果一致,但后者可以传参; 写在Vue实例里面的新属性 methods: { demo() {...就是点击后,弹出弹窗后,还在这里,没有跳到指定的网页 --> click.prevent="showInfo">点我提示信息...使用事件的捕获模式(事件的发生时先捕获,再冒泡(触发),现在,用了这个模式,让他在捕获阶段就开始触发) --> click.capture="showMsg...事件的默认行为立即执行,无需等待事件回调执行完毕; --> keyup(按下放开触发)使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发。
,当点击了最里面的div时,事件冒泡到中间的div,但因为使用了修饰符 .self,所以它并没有调用事件的处理函数 .once 该修饰符表示事件只能被触发一次,我们来看例子 我们来点击类名为grandson的div,结果如下 div3被点击 div2被点击 这里,因为div2使用了修饰符 .stop,所以点击事件没有向上继续传递。...但其实使用时我们会发现这样一个情况,@keyup.alt.enter='keyUp',我们按住 alt ,再按住一个空格键或者tab键,然后按住回车键,也可以触发该事件。....native 该修饰符的作用比较简单,我就几句话描述一下吧 //父组件使用了一个名为child-cpn的子组件,并监听他的click事件,结果是没作用的 click='cpnClick...但只要我们在该事件后面使用修饰符 .natvie 就可以绑定上原始的事件了 //父组件使用了一个名为child-cpn的子组件,并监听他的click事件,成功绑定 click.native
,那是16版本及之前);事件一旦在id = root的DOM元素中委托,其实是一直在触发的,只是没有绑定对应的回调函数;图片 盗用一张官方图,按官方解释,之所以会将事件委托从document中移到id...它们分为三类:离散事件:discreteEvent,常见的如:click, keyup, change;用户阻塞事件:userBlocking,常见的如:dragEnter, mouseMove, scroll...事件派发上面提到,事件一旦在id = root的DOM元素中委托,其实是一直在触发的,只是没有绑定对应的回调函数。...并以该节点为孩子节点往上查找,找到包括该节点及以上所有的click回调函数创建dispatchListener,并添加到listeners数组中。...,所有的事件通过addEventListener委托在id=root的DOM元素上进行监听;在我们触发事件时,会进行事件合成,同类型事件复用一个合成事件类实例对象;最后进行事件的派发,执行我们代码中的事件回调函数
id = root的DOM元素中触发; React自身实现了一套事件冒泡捕获机制; React实现了合成事件SyntheticEvent; React在17版本不再使用事件池了(网上很多说使用了对象池来管理合成事件对象的创建销毁...,那是16版本及之前); 事件一旦在id = root的DOM元素中委托,其实是一直在触发的,只是没有绑定对应的回调函数; 图片 盗用一张官方图,按官方解释,之所以会将事件委托从document中移到id...它们分为三类: 离散事件:discreteEvent,常见的如:click, keyup, change; 用户阻塞事件:userBlocking,常见的如:dragEnter, mouseMove,...事件派发 上面提到,事件一旦在id = root的DOM元素中委托,其实是一直在触发的,只是没有绑定对应的回调函数。...并以该节点为孩子节点往上查找,找到包括该节点及以上所有的click回调函数创建dispatchListener,并添加到listeners数组中。
需要事先为DOM对象指定事件处理程序,导致访问DOM的次数增多,会延迟整个页面的交互就绪时间。 事件委托 对事件处理程序过多的解决方案是使用事件委托。...事件委托利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。...通过元素id,为每个元素执行不同的if语句。 并不是所有的事件都适合使用事件委托,比较适用的事件是:mouseup、mousedown、click、keyup、keydown和keypress。...移除事件处理程序 前文已经讲过事件的添加以及事件的移除。对于页面的事件处理程序太多,会影响页面的性能,除了使用事件委托之外,还可以将一些事件移除。...innerHTML移除了该元素,但是元素的事件处理程序并没有移除,依然留在内存中。
但是用了这么久的zepto你知道这样写代码 $('.list').on('click', 'li', function (e) { console.log($(this).html()) }) 是怎么实现事件委托的吗...举个例子 我们把原本要添加到li上的事件委托到父元素ul上。...我们来看看,每个key的数组都长啥样 [ { e: 'click', // 事件名称 fn: function () {}, // 用户传入的回调函数 i: 0, // 该对象在该数组中的索引...// click() 形式的调用内部还是用了bind this.bind(event, callback) : this.trigger(event) } }...结尾 罗里吧嗦说了好多,不知道有没有把zepto中的事件处理部分说明白说详细,欢迎大家提意见。
--这里使用@--> 12 click="sayHi('我被点击了')">说我被点击了 调 --> keyup.13="sayHi('你好')">说你好 的: @click="" 推荐 1、事件对象: @click="show($event)" 2、事件冒泡: 阻止冒泡: a). ev.cancelBubble...@keyup.enter 上、下、左、右 @keyup/keydown.left // 左 @keyup/keydown.right //...右 @keyup/keydown.up // 上 @keyup/keydown.down // 下
事件处理 事件的基本用法 使用v-on:xxx或@xxx绑定事件,其中 xxx 是事件名 事件的回调需要配置在methods对象中,最终会在vm上 methods中配置的函数,不要用箭头函数,否则 this...就不是vm了 methods中配置的函数,都是被 Vue所管理的函数,this 的指向是vm或组件实例对象 @click="demo"和@click="demo($event)"效果一致,但后者可以传参...:使用事件的捕获模式 self:只有event.target是当前操作的元素时才触发事件 passive:事件的默认行为立即执行,无需等待事件回调执行完毕 修饰符可以连续写,比如可以这么用:@click.prevent.stop...-- 事件的默认行为立即执行,无需等待事件回调执行完毕; --> 没有影响 --> <!...就是win键) 配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发,指定 ctr+y 使用 @keyup.ctr.y 配合keydown使用:正常触发事件 也可以使用keyCode
jQuery简单绑定事件的方式,可以让我绑定多个事件处理程序跟DOM2级绑定事件的方式一样....keyup([[data],fn]) $('p').keyup(fn); 当按钮被松开时,发生 keyup 事件。它发生在当前获得焦点的元素上。...console.log(e.data); }); // 事件方法被调用,但没有传递参数 // 代码触发此事件,并模拟当前事件对应的操作。...// 第二个参数: 给事件处理程序的参数的data属性传递数据 // 第三个参数: 事件处理程序的回调函数。...实例: // 解绑所有的on的事件 $("p").off() // 解绑所有的p的委托click事件,所有子元素都被取消绑定 $("p").off( "click", "**" ) // 解绑具体的某个事件处理程序
简单的文本框输入自动提示--输入的时候可以直接异步加载数据库中匹配的项,然后显示出来。 这里没有使用到数据库,直接在PHP用数组模拟数据存储。 ?...demo演示 原理主要是: 监听输入框的状态,当有改变的时候即刻通过ajax发送数据并取得返回值。...主要使用了jQuery封装很方便,但貌似我这个兼容性不咋地...主要提供个思路吧~ js部分: <script type="text/javascript" src="....){ alert("your name is " + $(":input").val()); } }); $(":input").bind("keyup...",function(event){ //事件委托 $("#name").val($(event.target).text());
确实调用了btn的click()方法, 而且还调用了div的click()方法. 这是事件冒泡机制, 通常我们在页面是要避免这样的情况发生的. 所以会写一个方法阻止事件冒泡....-- submit 有自己的模式提交事件, 但通常我们不希望使用默认的提交时间, 而是使用我自定义的事件. --> 这时, 我们在调用方法, 发现不会自动跳转到action指定的事件了,...但是有个问题, 虽然调用了click指定的事件, 但是依然有事件冒泡, 同时还调用和div的click事件, 这个简单, 在增加阻止冒泡事件就可以了....-- submit 有自己的模式提交事件, 但通常我们不希望使用默认的提交时间, 而是使用我自定义的事件. --> ....keyup.enter="keyup" 在keyup事件后面增加.enter即可 .once: 只触发一次回调 增加了 .once的事件, 只有第一次点击有反应, 后面点击就没有反应了.
领取专属 10元无门槛券
手把手带您无忧上云