响应

js中事件重复绑定会相应导致多次处理程序的响应

隐身守侯 提交于 2020-02-29 21:42:40
项目中有一个选定车型的下拉组件,有品牌下拉和车系下拉,当我们选中某品牌后,才会弹出车系下拉。 测试中发现,当我们在选中某个品牌下拉后反悔,又重新选中了其他品牌,然后才选择车系,会出现问题响应程序多执行了一次。 经过反复调试找出原因: 当初设计这个功能时,约定当选中品牌后,触发车系下拉的弹出并与之绑定onChange事件,使得选中车系后请求相应数据。 问题关键在于,当jQuery为同一个元素绑定两次事件处理句柄,那么事件触发时,也同样会进行两次响应 也就是说当我们第一次选中品牌下拉时候,就触发了一次对车系下拉的事件绑定,而第二次选中品牌时候,又一次触发了车系下拉的事件绑定, 这样当我们最终选中车系下拉时,已经触发并对其进行了两次事件绑定,所以最终请求数据时也会请求两次。 ok,那我们如何避免之前那个bug呢。 我们可以在每次给车系下拉绑定事件处理句柄前,先清空之前可能存在的onChange事件绑定。代码如下: $('input.series').unbind('change').on("change", function(e){ ... }) 只需要简单的调用unbind方法并传入需要被终结的事件名就可以了。 延伸一下的话,jQuery中经常有这类处理, 在进行新的处理之前,终结掉此前的处理。 场景如有个下拉菜单,设计效果是鼠标移中则显示菜单,鼠标移除则隐藏菜单。

android对OnTouchListener、OnClickListener等事件响应的研究

女生的网名这么多〃 提交于 2019-12-09 17:48:48
前几天遇到一个小问题,就是给listview添加onItemClickListener、onItemLongClickListener、onTouchEvent三种事件的 时候,只执行了onTouchEvent事件,而其他的两个事件未执行,解决办法:在对应的onTouchEvent的action里面设置return false;当执行到该action的时候就会返回false,前两个事件就会执行了。解决方法很简单,为此还特意研究了一下View对事件响应的流程。 Android的各个View之间的关系是一颗树,下面的子View都是在父View的基础上建立的,可以看成子View叠加在父类的View上。下面我们来看一下两种不同情况的事件处理。 1、给同一个View设置了OnTouchEvent事件、OnClickListener事件与OnLongClickListener事件,当点击View的时候,事件的响应顺序是: Touch事件的ACTION_DOWN -> ACTION_UP -> OnClick/OnLongClick。 该View是怎么响应这个点击动作的呢? 首先,该View会先响应ACTION_DOWN事件,并返回一个boolean值,这里有两种判断: a:返回True,表示该View接受此按下动作,就是说这个点击动作的按下操作被中止,然后就是响应ACTION_UP事件

保持Qt程序中GUI的响应流畅

旧街凉风 提交于 2019-11-26 11:33:58
如何使 Qt 平台中的 GUI 保持响应流畅?一般来说耗时较长的操作,分为计算密集型操作和IO密集型操作,对于这两类操作如何提高响应速度。 而从操作的本质上来说,操作又可分为不可分解操作,如在第三方库中耗时较长的操作,以及可分解操作,其中可分解操作又可细分为串行操作和可并行操作,如何针对这几类操作来提高响应速度呢? 如何将异步的操作,如网络库中异步的读取数据方法,变成同步的操作? 此外对于多线程,普遍的看法是可以提供程序的运行速度,其实不然,不正确地使用线程常常会使程序变慢,那么在 QT 中是否可以通过多线程以外的方法来提高响应速度呢?本文给你解决。 首先什么是对 GUI 的响应?答: GUI 的响应就是系统对于 GUI 事件的处理速度。 由于系统处理事件需要一定的时间,所以一般窗口系统都会提供一个事件队列来存储事件。如果把每个事件处理看成一个任务的话,那么事件处理就类似于操作系统对于任务按照优先级进行处理,使得每个任务的平均等待时间最小。那么就可以借鉴一下操作系统中的方法,比如: 分级,让较长的任务延后执行。 分时,对于较长的任务,让其执行一段时间后暂停,然后再执行。 减少每个任务运行的耗时,当然这是最基本的方法。 先看第一个分级,当一个事件处理程序知道自己将执行耗时很长的操作时,可以调用QCoreApplication::processEvents() 方法