按照上面的分析,接下来我们只需要对扇形的点击事件做阻止冒泡就好了。 我的测试代码如下: 分别使用了常识里的event.stopPropagation()、return false;,甚至看到params有个cancelBubble也尝试设置成true,都无法生效
掌握 DOM 的基本概念后,这次我们讲讲浏览器的事件和事件对象。再结合具体业务需求,通过例子展示事件相关的操作方法。
有天,辛苦做了个复杂操作功能的页面,上线后有用户反馈:很多功能使用不了。惊了,以为是哪里出了bug。 立马联系用户,才发现原来是用户使用笔记本电脑,没有禁用触控板,然后不小心碰到导致整个界面都放大,很多功能超出界面不见了。 然而那能怎么办,用户第一,自然得快速解决这个问题,而且是触控板和触摸屏都得解决。
先说结论:通过调用事件名的方式和 bind 的方式只能绑定之前存在的元素,后添加的元素不能绑定事件;而 delegate 和 on 的方式绑定元素的方式可以。
引入了jquery-1.4.2.js文件可以从网上下,或者从我这里下,无需积分免费下载:jquery-1.4.2.js
(2)【处理事件,独一无二】 正常情况下,一个事件序列只能被一个View拦截且消耗!!! 这一条的原因可以参考(3), 因为一旦一个元素拦截了某此事件, 那么同一个事件序列内的所有事件都会直接交给它处理!!! 因此同一个事件序列中的事件不能分别由两个View同时处理!!! 除非, 将本该由某个View自己处理的事件 通过onTouchEvent强行传递给其他View处理。 (3)【事件序列,从一而终】 某个View一旦决定拦截,则这一个事件序列都只能由它来处理 (如果事件序列能够传递给它的话), 并且它的onInterceptTouchEvent不会再被调用!!! 当一个View决定拦截一个事件后, 那么系统会把同一个事件序列内的其他方法都直接交给它来处理, 因此 就不用再调用这个View的onInterceptTouchEvent去询问它是否要拦截了。 (4)【短期失信】 某个View一旦开始处理事件, 如果它不消耗ACTION_DOWN事件(onTouchEvent返回了false), 那么同一事件序列中的其他事件都不会再交给它来处理, 【即,View放弃处理ACTION_DOWN,便放弃了整个事件序列!!!】 并且事件将重新交由它的父元素去处理, 即父元素的onTouchEvent会被调用。【事件向上“回传”】 即, 事件一旦交给一个View处理,那么它就必须消耗掉!!! 否则同一事件序列中剩下的事件就不再交给它来处理了!!! 好比上级交给程序员一件事,如果这件事没有处理好, 短期内上级就不敢再把事情交给这个程序员做。 (5)【余粮上缴】 如果View不消耗除ACTION_DOWN以外的其他事件, 那么这个点击事件会消失, 此时父元素的onTouchEvent并不会被调用, 并且当前View可以持续收到后续的事件, 最终这些消失的点击事件会传递给Activity处理。 (6)ViewGroup默认不拦截任何事件。 Android源码中 ViewGroup的onInterceptTouch-Event方法默认返回false。 (7)View没有onInterceptTouchEvent方法,一旦有点击事件传递给它,那么它的onTouchEvent方法就会被调用。 (8)View的onTouchEvent默认都会消耗事件(返回true)!!!!!!! 除非它是不可点击的(clickable 和longClickable同时为false)。 View的longClickable属性默认都为false, clickable属性要分情况, 比如Button的clickable属性默认为true, 而TextView的clickable属性默认为false。 (9)【enable无用,clickable居上】 View的enable属性不影响onTouchEvent的默认返回值。哪怕一个View是disable状态的!!!!! 只要它的clickable或者longClickable有一个为true, 那么它的onTouchEvent就返回true!!! (10)onClick会发生的前提是当前View是可点击的,并且它收到了down和up的事件。 (11)【由外而内;以下犯上】 事件传递过程是由外向内的, 即事件总是先传递给父元素,然后再由父元素分发给子View, 通过requestDisallowInterceptTouchEvent方法可以在子元素中干预父元素的事件分发过程,但是ACTION_DOWN事件除外。
Vue.js 事件修饰符 .stop 用于阻止事件继续传播,即阻止事件冒泡。这在处理父子组件之间的事件通信时特别有用,可以防止事件从子组件冒泡到父组件,或者在一个元素上绑定多个事件处理函数时,阻止后续事件处理函数的执行。
熟悉了 Vue 的指令系统后,在实际开发中,不可避免的会使用到对于事件的操作,如何处理 DOM 事件流,成为我们必须要掌握的技能。不同于传统的前端开发,在 Vue 中给我们提供了事件修饰符这一利器,使我们可以便捷的处理 DOM 事件,本章,一起来学习如何使用事件修饰符来实现对于 DOM 事件流的操作。
为了方便大家写代码,vue.js给大家提供了很多方便的修饰符,比如我们经常用到的取消冒泡,阻止默认事件等等~
在前端开发中,处理用户与页面的交互是至关重要的一部分。JQuery作为一个广泛应用的JavaScript库,为我们提供了简便而强大的事件绑定机制,使得我们能够更加灵活地响应用户的行为。本篇博客将深入解析 JQuery 的标准事件绑定方式,为你揭开事件背后的神秘面纱。
使用CSS隐藏元素的主要方式有diaplay: none;、opacity: 0;、visibility: hidden;、position: absolute; overflow: hidden;、clip-path: polygon(0 0, 0 0, 0 0, 0 0);、height: 0; overflow: hidden;。
我们看到不光点击按钮的点击事件触发了,而且父容器div的点击事件也触发了,这时我们就可以使用.stop来阻止这个冒泡了,如下
在这个页面中,第一个form表单,是开始就有了,第二个是点击按钮后动态添加的,它的判断是否为空是无效的。
我们知道,如果给 form 里面的 button 元素绑定事件,需要考虑它是否会触发 form 的 submit 行为。除此之外,其它场合给 button 元素绑定事件,你几乎不用担心这个事件会有什么非预期的附加效果,很自然地会这样写事件处理代码:
移动端用tap时会有穿透问题 一:click与tap比较 click与tap都会触发点击事件,但是在手机web端,click会有200-300ms的延迟,所以一般用tap代替click作为点击事件。singleTap 和doubleTap分别代表单次点击和双次点击 二:tap的穿透处理 使用zepto框架的tap的点击事件,来规避click事件的延迟响应,会出现穿透,即点击会触发非当前层的点击事件。 三:穿透原因 问题:在HTML5点击了q以后,弹出b的弹框 因为tap事件是通过document绑定了tou
在前端开发的舞台上,用户与页面的互动是一场精彩的表演。而 JQuery,作为 JavaScript 的一种封装库,为这场表演提供了更为便捷和优雅的事件绑定方式。其中,on 和 off 两位主角,正是这场奇妙舞曲中的核心演员。在这篇博客中,我们将深入探讨这两位演员的特长、用法以及一些鲜为人知的技巧,带你踏入 JQuery 事件绑定的精妙世界。
定时自动刷新,content表示刷新间隔,单位为秒s,下面代码表示页面每隔三秒刷新一次
(1)在这个页面中,第一个form表单,是开始就有了,第二个是点击按钮后动态添加的,它的判断是否为空是无效的。
如果你点击了页面中的 li 标签,那么这个click事件会按照如下 (1)li (2)ul (3)body (4)html (5)document 也就是说click事件首先在 li 元素上触发, 而这个元素就是我们点击的元素,然后点击事件沿着DOM树向上传播 在每一个节点上触发,直到传播到document对象 我自己画了一个事件冒泡的示意图如下
前言 在平时的H5移动端开发时,我们难免会遇到各种各样的坑点,这篇文章就带着大家来看看怎么解决,文章较长,建议收藏方便以后查阅!
有了前一篇的概念及Demo的亲自体验,那么接下来我们从源码出发,知根知底,看一下究竟。
在前端的舞台上,用户交互是一场精彩的表演,而全选全不选的功能则是其中一段引人入胜的剧情。通过巧妙运用 JQuery,我们可以为用户提供便捷的全选和全不选操作,让页面更富交互性。本篇博客将深入探讨 JQuery 中全选全不选的实现原理和实际应用,为你揭开这段前端小剧场的神秘面纱。
即每个油猴脚本都有的,脚本开头很多行注释的内容,这是油猴脚本关键的基础部分,刚开始接触可能会一头雾水,但你绝不能忽视这部分内容
当父子元素中都有点击事件的时候,为了让触发子元素中的事件时,不去触发父元素中的事件,可以在子元素事件中添加stop来阻止事件冒泡。
一开始ViewGroup 会接受到整个事件序列的第一个事件: ACTION_DOWN,ViewGroup#dispatchTouchEvent 收到ACTION_DOWN 后, 开始询问 ViewGroup#onInterceptTouchEvent 是否需要拦截, 默认情况下 ViewGroup#onInterceptTouchEvent 返回false 不拦截,开始向下传递ACTION_DOWN 事件, Buttton#dispatchTouchEvent 收到ACTION_DOWN 询问onTouchEvent 是否处理, Button 默认处理,此后的所有事件序列都直接跨过 ViewGroup#onInterceptTouchEvent 的判断直接传递给Button, 但 ViewGroup#dispatchTouchEvent 会收到所有事件。随着手指的滑动Button 的坐标发生了改变,当手指抬起时触发 Button#onClick 事件。(移动出自己的范围,就消失了)
这里直接贴上angular源码地址:angular源码之hammer_gestures <这里方便它更新后的修改> 这里又贴上该地址的源码以便说明:
本文介绍了如何定位和分析Web性能问题中的重绘(Repaint)问题,通过介绍和实例分析,提供了在Timeline中查看和定位重绘问题的方法,以及通过Paint Profiler分析绘制细节,从而优化页面性能。
onclick 其实就是html元素的一个属性,而属性的值需要是 一段可执行的JS代码
UGUI是新版Unity自带的原生UI系统,组件也在不断的增加扩展,基本的贴图,文本,按钮等还是可以用的。接下来的几篇内容会以UGUI展开分享。
1.1.3. 案例1:测试两种方式的区别【个数+顺序】
4.以前的做法:动态创建元素createElement , 但是元素里面内容较多,需要innerHTML赋值在appendChild 追加到父元素里面.
jQuery的版本更新很快,你应该总是使用最新的版本。因为新版本会改进性能,还有很多新功能。
作为一个前端小白,入门跟着这四个来源学习,感谢作者的分享,在其基础上,通过自己的理解,梳理出的知识点,或许有遗漏,或许有些理解是错误的,如有发现,欢迎指点下。
别踩白板这个游戏相信大家都玩过,这个是基于HTML5打造的简单小游戏,在PC端和移动端都能够运行,适应多种平台,今天我们使用原生JS搭配JQuery构建这个小游戏--别踩白板。
Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节,如:event.preventDefault() 或 event.stopPropagation()。
1. 使用最新版本的jQuery jQuery的版本更新很快,你应该总是使用最新的版本。因为新版本会改进性能,还有很多新功能。 下面就来看看,不同版本的jQuery性能差异有多大。这里是三条最常见的jQuery选择语句: $('.elem') $('.elem', context) context.find('.elem') 我们用1.4.2、1.4.4、1.6.2三个版本的jQuery测试,看看浏览器在1秒内能够执行多少次。结果如下:
前言 jquery 有四种绑定事件的方式:on, bind, delegate,live。其中 live() 方法已被移除。 自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代。 $(selector).off(type)为元素解除绑定的事件 on 绑定事件 基本语法 $(selector).on(event,childSelector,data,function) 参数 描述 event 必需。事件的类型一个或多个,由空格分隔多个事件
MDN Web文档:https://developer.mozilla.org 查询insertAdjacentHTML用法
表明它是一个组件,我们称之为“子组件” 3. 注意:在组件wxss中不应使用ID选择器、属性选择器和标签名选择器。(只使用class)
最近一段时间打了一个大仗,现在总算消停点,才有时间来做个总结吧算是: 移动端遇到一个项目,是一个列表的侧滑栏,在我这里用jq写的交互事件。自测各方面都挺好的,美滋滋的给了研发。研发也美滋滋的开始开发。 但是,好景不长。。。 研发加了ajax事件后,我的交互效果有部分受了影响! 一个小姑娘,在一群大老爷们研发堆里,对着昏暗的电脑和看不太懂的后台代码,改了半天。最后没解决。我就回来了。 后来就找共同点,发现有个类名控制的交互都不能实现,最后去问研发,你是不是没加上我的类名? 回:加着呢啊!我一看模拟器,确实加着
事件代理就是利用事件冒泡的原理(事件冒泡就是事件会向它的父级一级一级传递),把事件加到父级上,通过判断事件来源,执行相应的子元素的操作,事件代理首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。
点击A的时候获取当前选中数据的所属子项,然后拿该子项中已选的去和全部比对得出未选的,然后拿未选的去blist进行比对,如果blist中出现未选的则将其删除。
在测试小程序的时候,发现了这样的一个bug,点击子元素事件d的时候触发父元素的点击事件,从而执行父级的点击事件,跳转到了父级的点击事件的页面了。
是因为子控件响应了点击事件,所以导致了点击LinearLayout父布局没反应。
原文标题:Javascript - Event order 原文链接:https://www.quirksmode.org/js/events_order.html Netscape 4 只支持事件捕获,Explorer只支持事件冒泡。Netscape 6和 Konqueror冒泡和捕获均支持,但Opera 和iCab冒泡和捕获均不支持。 在介绍事件的那篇文章(文章链接:https://www.quirksmode.org/js/introevents.html)中,我提了个看起来比较难以理解的问题:“
weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android。而weex-hacknews则是weex官方出品的,首个使用 Weex 和 Vue 开发的 Hacker News 原生应用,在项目中使用了 Vuex 和 vue-router等官方组件。本文会分析weex-hacknews的代码,学习如何使用weex进行开发,本文是第二部分,第一部分见(http://www.cnblogs.com/xiaoqi/p/weex-hackernews-cod
领取专属 10元无门槛券
手把手带您无忧上云