Override public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { } } 但是发现这个事件被触发了两次...里面代码被重复执行了 1.排查问题 原因是: 一个项目中引入Spring和SpringMVC这两个框架,那么它其实就是两个容器,Spring是父容器,SpringMVC是其子容器,并且在Spring父容器中注册的Bean...对于SpringMVC容器中是可见的,而在SpringMVC容器中注册的Bean对于Spring父容器中是不可见的,也就是子容器可以看见父容器中的注册的Bean,反之就不行。...详见 那么其实我们spring 的applicationontext和使用MVC之后的webApplicationontext在刷新bean后都会调用我们的onApplicationEvent方法,分别传入各自的...//需要执行的逻辑代码,当spring容器初始化完成后就会执行该方法。 }
iScroll呢其实是截获了点击浏览器时的touchstart和touchend事件。在touchend的时候使用js去触发元素的onclick事件(_end这个函数)。...而在实际操作中,先执行了touchend,然后再执行了一次onclick的相关函数。这样就形成了头疼的一次点击两次触发!...网上有很多代码说解决“iScroll click事件”点击一次触发两次,我也是按着各位大神的步骤写的,但是依旧不成功,也可能是操作不对,我附上我的执行操作的代码,我的已经成功。...解决方案1:点击事件使用Zepto的 tap ,进行解决。 解决方案2:在iscroll搜索that.doubleTapTimer将其注释掉 或者 直接注释以下557-573行即可!
出处:jQuery 双击事件(dblclick)时,不触发单击事件(click) 在jQuery的事件绑定中,执行双击事件(dblclick)时能触发两次单击事件(click)。...即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick...)时却会触发两次单击事件(click)。...mouseout,click,dblclick; 在双击事件(dblclick),触发的两次单击事件(click)中,第一次的单击事件(click)会被屏蔽掉,但第二次不会。...}) 从测试结果来看,如果前后两次点击的时间在 300ms 左右的时候,还是很容易出现 click 和 dblclick 事件被“同时”调用的情况,而如果间隔的时间更短或更长,则只会有 click 或
事实上,jQuery的事件绑定机制也使用了这套数据接口。...事件绑定 在 jQuery1.7之后,推荐统一使用 on()来进行事件绑定。...事件对象 event.currentTarget,event,target 事件绑定节点/事件的触发节点(冒泡行为) event.delegateTarget 绑定事件的对象,通常就是 event.currentTarget...上一个绑定函数的返回值 event.timeStamp 事件触发时的时间,其值为 (newDate).getTime() event.type 事件类型 如果一个绑定函数最后返回了 false,则默认是....}); 它跟两次 defer.done 是不同的。 new_defer 会在 inner 那里的 defer 被触发时再被触发,所以输出结果是: inner, hello。
,.height()方法返回的是 数字类型(20),.css(“height”)返回的是字符串类型(20px),因此.height()方法常用在参与数学计算的时候 2、坐标值 $(“div”).offset...(); // 获取或设置坐标值 设置值后变成相对定位 $(“div”).position(); // 获取坐标值 子绝父相 只能读取不能设置 3、滚动条(滚动事件) $(“div”).scrollTop...(); // 相对于滚动条顶部的偏移 $(“div”).scrolllLeft(); // 相对于滚动条左部的偏移 案例:两次跟随的广告 案例:防腾讯固定导航栏 二、jQuery事件 1、绑定 click.../mouseenter/blur/keyup // 绑定事件 bind:$node.bind(“click”,function(){}); // 触发一次 one : $node.one(“click”...click : $(“div”).click(); trigger:触发事件,并且触发浏览器默认行为 triggerHandler:不触发浏览器默认行为
要解决这个问题,可以使用jQuery中的另一个关于页面加载的方法——load()方法。load()方法会在元素的onload事件中绑定一个处理函数。...如果处理函数绑定给window对象,则会在所有的内容(包括窗口、框架、对象和图像等)加载完毕后触发,出国处理函数绑定在元素上,则会在元素的内容加载完毕后触发。 ...,所以即使将上面代码中的window.load赋值两次,也只会执行后面的函数。...,接着就是为元素绑定事件来完成某些操作了,所使用的是bind()方法。...明天继续完成jQuery事件的下半部分,包括的内容有合成事件、事件冒泡、移除事件等内容。
其实,ng只有在指定事件触发后,才进入$digest cycle: DOM事件,譬如用户输入文本,点击按钮等。...去触发事件,然后立即更新UI。...减少事件广播,使用双向数据绑定或共享service等方法来代替。.../master/CHANGELOG.md#127-emoji-clairvoyance-2014-01-03 对高频的事件做缓冲限速,避免触发太频繁。...除了directive外其他地方,特别是controller里面不要操作dom, 尤其是绑定到scope后,便是灾难。 改变以前使用JQuery那样以DOM为中心的思维,拥抱以数据为中心的思维。
对于多个相同的事件处理器,不会重复触发,不需要手动使用removeEventListener清除 5.IE9使用attachEvent和detachEvent 探究: onclick添加事件: element.onclick...,javascript代码 运行结果: 可想而知,只会弹出一个弹出框,虽然绑定了两次,‘我是click2’ 一个click处理器在同一时间只能指向唯一的对象。...代码: 运行结果: 两次绑定的事件,都能够成功运行,也就是前后弹出 ‘我是addEvent1’ ‘我是addEvent2’ 由此可知,对于一个可以绑定的事件对象,想多次绑定事件都能运行,选用addEventListener...对于上面的匿名函数,就算内容一样,也会依次执行,因为并不能算是相同事件处理器。 里面的this引用,不是window对象,而是触发事件的元素的引用。...对于多个相同的事件处理器,不会重复触发,不需要手动使用removeEventListener清除 5.IE9使用attachEvent和detachEvent 参考文献: https://developer.mozilla.org
父组件可以向子组件传递props,props中带有初始化子组件的数据,还有回调函数 子组件的state发生变化时,在子组件的事件处理函数中,手动触发父函数传递进来的回调函数,同时时将子组件的数据传递回去...key做为DOM节点标识,如果是前后两次arr分别为[1,2,3,4]和[5,6,7,8]和前后两次arr分别为[1,2,3,4]和[4,3,2,1]的情况,很明显前者可以认为是DOM改变了,后者可以认为是...,就用数据本身作为key值吧 jquery中的事件会被绑定在原生节点本身,而在react中会被统一绑定到document去代理 扩展: 知道react中事件大致的注册以及触发的原理吗 注册时react...会首先判断该组件上props是否是event事件,若是则绑定到document上,回调函数是dispatchEvent,将绑定了事件的react组件实例的rooNodeId(虚拟dom的唯一标识)取出来...,作为key值,对应的回调函数作为value值存为一个对象 触发时事件冒泡传递到document的时候,会触发dispatchEvent的执行,根据目标实例的递归向上寻找目标实例的父元素和祖先元素,存到数组
在很短的时间内发生两次 click,即是一次 double click 事件。提示:如果把 dblclick 和 click 事件应用于同一元素,可能会产生问题。...这将触发所有绑定的focus函数,注意,某些对象不支持focus方法。 2.失去焦点blur :当元素失去焦点时触发 blur 事件。...这个函数会调用执行绑定到blur事件的所有函数,包括浏览器的默认行为。可以通过返回false来防止触发浏览器的默认行为。...4.选中内容select :当 textarea 或文本类型的 input 元素中的文本被选择时,会发生 select 事件。这个函数会调用执行绑定到select事件的所有函数,包括浏览器的默认行为。...可以通过在某个绑定的函数中返回false来防止触发浏览器的默认行为。 四:其他事件: 1.scroll 当用户滚动指定的元素时,会发生 scroll 事件。
操作,查找,删除,创建,复制,插入,替换,jQuery事件,事件绑定,鼠标事件,键盘事件,表单事件,窗口事件,事件冒泡,事件解除。...,dblclick()双击在短时间内发生两次click就是依次双击事件。...change()当元素的值发生改变时,会发生change事件,focus()当元素获得焦点时,触发focus事件。blur()当元素失去焦点时触发。...窗口事件: scroll()当用户滚动指定的元素时,会触发scroll事件。scroll事件适用于所有可滚动的元素和window对象。...resize()当调整浏览器窗口的大小时,会触发resize事件。
从微观上分的话,页面加载有两部分 一个是以DOMContentLoaded触发为标志的DOM树的渲染完成 一个是以辅助资源img,font加载完成为触发标志的onload事件 他们两个的具体区别就是"资源的加载...这两个线,分别代表的是DOMContentLoaded和onload触发的时间。 这也更能直观的看出,DOMContentLoaded事件比onload事件先触发吧。现在回到我们开头的那个问题。...接下来我们要做的最后一件事,就是看看jquery老大哥,他的ready事件的原理到底是什么. jquery ready事件浅析 jquery主要做的工作就是兼容IE6,7,8实现DOMContentLoaded...这个时候模拟触发DOMContentLoaded事件,其实和onload事件触发时间并没有太久的时间距离。 这种方式兼容低版本IE还是不太可靠的。...//这也是上面两次绑定事件的原因,会保证只执行一次 if (wait !
从上面的图中我们看见,当点击 蓝色 p 元素时,先触发了 p 元素上绑定的事件,然后又触发了 红色 div 元素上绑定的事件,这就是事件冒泡了。 事件委托 的实现 先来段代码 <!...,不过在这之前,我们还要明白一下什么是 event 对象 任何事件触发后将产生一个event对象 event对象记录事件发生时的鼠标位置、键盘按键状态和 触发对象等信息 一般情况下,绑定事件处理函数时...2、第一段绑定了两次事件,第二段绑定了一次事件 也就是说,原来在 li 上绑定的事件,现在委托在了父元素 ul 上,而在 ul 上只需要绑定一次就可以了。...事件委托 的好处 1、减少了事件监听器,原来需要在多个子元素绑定相同的事件处理函数,现在只需要在祖先元素(一般为父元素)上统一定义一次即可。...还有 JQuery中的事件委托 又是怎么做的呢? 看这里 简单说 JavaScript中的事件委托(下)
即使是执行live()函数之后新添加的元素,只要它匹配当前jQuery对象的选择器,绑定的事件处理函数仍然对其有效。 要删除通过live()绑定的事件,请使用die()函数。...// 这里的this指向触发点击事件的p元素(Element) alert( $(this).text() ); }); 如果要绑定所有的元素,你可以编写如下jQuery代码: //为所有...指向触发点击事件的p元素(Element) alert( $(this).text() ); }); 此外,我们还可以同时绑定多个事件,并为事件处理函数传递一些附加的数据,我们可以通过jQuery...同样以初始HTML代码为例,我们可以编写如下jQuery代码: // 为div中的所有p元素绑定click事件处理程序 // 只有n2、n3可以触发该事件 $("div").on("click", "p...此外,你可以为同一元素多次调用该函数,从而绑定多个事件处理函数。触发resize事件时,jQuery会按照绑定的先后顺序依次执行绑定的事件处理函数。
请看下面的例子,为a元素绑定一个处理点击事件的函数: $('a').click(function(){ alert($(this).attr('id')); }); 这段代码的意思是,点击a元素后,弹出该元素的...为了获取这个属性,必须连续两次调用jQuery,第一次是$(this),第二次是attr('id')。 事实上,这种处理完全不必要。...事件的委托处理(EventDelegation) javascript的事件模型,采用"冒泡"模式,也就是说,子元素的事件会逐级向上"冒泡",成为父元素的事件。 利用这一点,可以大大简化事件的绑定。...因此,这个事件只需要在父元素绑定1次即可,而不需要在子元素上绑定100次,从而大大提高性能。这就叫事件的"委托处理",也就是子元素"委托"父元素处理这个事件。 具体的写法有两种。...唯一的区别在于,.delegate()是当事件冒泡到指定的父元素时触发,.live()则是当事件冒泡到文档的根元素后触发,因此.delegate()比.live()稍快一点。
事件委托 我们知道元素的时间会向上冒泡成为父元素的事件,在大多数人针对列表项的事件可能是同时绑定子元素事件。...//不建议 $("ul li").click(fn) //针对父元素绑定一次即可 $("ul").on("click","li",fn) 事件触发 如果需要触发多个其他事件,建议写成trigger(),...尤其是某些全局性、常用的工具函数事件建议这样写。....click(function(){ $.trigger("FN1") }) $(document).on("FN1",function(){ fn1() }) 绑定多个事件类型 //不建议...《锋利的jQuery 第二版》
在一个dom节点的事件绑定中,如果同时绑定了dblclick和mousedown那么想要执行双击事件(dblclick)时能就会触发两次mousedown事件。...两者的区别是,mouseenter事件只触发一次,而只要鼠标在节点内部移动,mouseover事件会在子节点上触发多次。...在单击的时候(也就是鼠标按下的时候)不会执行双击,但是双击的时候会执行两次单击再执行双击事件。 解决的思路:要想双击时不执行单击事件,就使用定时器清除掉两个单击事件,留下一个双击事件。...要想不执行第一次的任务队列,那么定时器时间间隔就必须大于两次单击的时间间隔了。这样才能清除第一次的单击事件,所以,这个200是酌情值,大于间隔就行。...第一次单击任务不执行了,是被定时器延时,然后第二次点击的时候给清除了。那么第二次点击事件呢? 在两次单击之后,会立马执行一个双击事件,双击事件的一开头就把这个第二次点击事件给清除了。
Widget.on(event_name,object, func) 允许绑定一个事件 event_name 触发时调用的函数func。...如果widget 被实例化的两次,在应用程序里将有两个相同 id,但却是不同的 HTML元素的情况。而这本身就是一个错误。...2) 简易 DOM 事件绑定 在前面的一部分,我们必须用 click() 或 change() 等事件绑定 HTML 元素。...jQuery事件和部件的事件区分开很重要。...event类属性是一个“助手”,协助绑定jQuery 的事件,它与部件事件无关,部件事件通过on()方法绑定。
+ 'px'; content.style.height = currentHeight + 'px'; 1.3 绑定滑动事件 在右边的索引栏上加上滑动事件,当点击或者滑动的时候触发。...在源代码中在touchstart事件的结尾处,在window上绑定了touchmove与touchend事件,是为了使得滑动得区域更大,只有在开始的时候在索引栏上触发了touchstart事件时,之后再...window上触发滑动和结束事件,这就意味着我们在滑动的过程中可以在左侧的内容区域滑动,同时也能达到index的效果。...如果不是用到多点触控,changedTouches和touches的区别并不是特别大,changedTouches在同一点点击两次,第二次将不会有touch值。...总结 分析就这么多,多看源码能够学到优秀的设计理念。比如如果最开始让我来做的话,我可以就只会在右侧的索引栏上绑定事件,而不会关联左侧的内容,这样滑动的区域将会大大减小。
当我们给 DOM 绑定事件的时候,加了防抖和节流的函数变得特别有用。为什么呢?因为我们在事件和函数执行之间加了一个控制层。记住,我们是无法控制 DOM 事件触发频率的。...看下滚动事件的例子: 当使用触控板,滚动滚轮,或者拖拽滚动条的时候,一秒可以轻松触发30次事件。经我的测试,在智能手机上,慢慢滚动一下,一秒可以触发事件100次之多。...但是如果事件触发的时间间隔过长,debounce 则不会生效。 前缘(或者“immediate”) 你会发现,直到事件停止快速执行以后,debounce 事件才会触发相应功能。为何不立即触发呢?...那样的话就跟原本的非 debounce 处理无异了。 直到两次快速调用之间的停顿结束,事件才会再次触发。 这是带 leading 标记的例子: ?...结论 使用 debounce,throttle 和 requestAnimationFrame 都可以优化事件处理,三者各不相同,又相辅相成。