javascript你不知道的javascript什么原因导致了多次调用点击事件

一个JavaScript逻辑,会自动绑定函数到按钮的click事件,但是这段代码会反复注册事件。这样依赖onNext函数会在点击一次按钮的时候多次触发。
这是JQuery内部没有判断是否绑定多次,怀疑其内部用了数组保存事件函数,而且没有去重。
下面的代码预防了这个问题。解决方案很简单。
if (!this.hasPageBarEvents) {
$(&.pNext&).on(&click&, this, this.onNext);
this.hasPageBarEvents =
以后用到JQuery要小心这个特性。
这是个让人每次改变页面窗口的大小时很郁闷的方法,尤其在IE浏览器中,稍微动下窗口边框,就会触发很多次事件。更让人蛋疼的是在resize事件中包含某些页面内容处理或计算导致resize事件再次被触发的时候,IE会随机陷入假死状态。 网上找了好久,都是千律一篇的,到处都是转载的一个方法;以下是网上找到的一个解决方法:
var resizeTimer = $(windo
jquery mobile 对手势触控提供了如下几个事件监听:
tap当用户点屏幕时触发 taphold当用户点屏幕且保持触摸超过1秒时触发 swipe当页面被垂直或者水平拖动时触发。这个事件有其相关联的属性,分别为scrollSupressionThreshold, durationThreshold, horizontalDi
之前做一个扩展,需要在改变窗口大小的时候保证页面显示正常,于是用了 window.onresize 但是发现每次 onresize 后页面中状态总是不对,后来查找出来原来是 onresize 事件触发了多次找成的,于是网上搜集了下解决办法,整理一下。 // 关于 onresize 事件触发次数,不同浏览器不同,safari, opera, firefox 都是一次(分别只用了一个版本测试,都是较新
javascript的mouseover和mouseout事件,在绑定元素内部有子元素的情况下,
经过绑定元素时会多次触发mouseover和mouseout事件。
jquery解决办法:
jquery的mouseenter和mouseleave方法已经修复了这个问题,可以直接用来替代mouseover和mouseout
不过有个mouseenter和mouseleave有个小问题是,让鼠
我想做一个首屏和第二屏之间滚动鼠标滚轮就可以整平切换的效果,遇到了很多问题,后来在kk的帮助下,终于解决了这个问题,甚是欢喜,于是记录一下: 我最初的代码是这样的:
&!DOCTYPE html& &html lang=&en&& &head& &meta charset=&UTF-8& /& &st
在IE浏览器下,一次resize事件被执行了多次。这是IE6和IE7的一个比较广为认知的问题,这个问题在这两个版本的浏览器中表现有所不同,通常IE6下会比IE7下更为糟糕。 现在已经有了一个较好的解决方案,让jquery.wresize.js这个jquery插件来帮你: Js代码
/* =============================================
原绑定方法:
$(&#sdfsd&).on(&mouseout&,function(e){ ***** });
这种方法只会在原click方法中继续添加新方法;
解决办法更改绑定方法为:
$(&#sdfsd&).unbind(&click&).click(functio
原绑定方法:
$(&#sdfsd&).on(&click&,function(e){ ***** });
这种方法只会在原click方法中继续添加新方法; 解决办法更改绑定方法为:
$(&#sdfsd&).unbind(&click&).click(function(e){ ***** });
在绑定新cl
android开发:如何实现同一个应用被同时打开多次 rt:
我有一个需求,就是开发一个插件式的应用,用来被一些应用调用。类似于支付宝支付插件,可以被多个应用调用,但是如果同一时间有好几个应用同时调用此插件,貌似不行,因为一个应用只能打开一个,不能同时被打开多次。
求高手指点迷津,谢谢!!!
------解决方案-------------------- 这个要看
Android:防止过快点击造成多次事件
Android:防止过快点击造成多次事件 问题 onClick事件是Android开发中最常见的事件。比如,一个submitButton,功能是点击之后会提交一个订单,
则一般代码如下,其中submitOrder()函数会跳转到下一页进行处理 :
//代码0 submitButton.setOnClickListener(new OnClickL
小弟刚学js,希望高手能够帮忙! 这是一个管理系统的中的项目参与人员选择的代码,要解决的问题是:
1.用户点击选择人员后,弹出一个新窗口,能根据姓名或单位查找某个人,然后选择想要选择的人.然后继续查找下一个人.然后选择. 2 选择好要选的人员后,把值返回到主页面的人员的表单中 3 一个表单中可能有多处字段需要填入人员.
比如现在要添加一个项目信息
项目主持人
项目组成人员 人员
如果在页面中包含一个ajax更新的列表,那么需要小心非动态更新部分的事件处理。 以带有公共工具栏的列表界面为例: | Menu1 | Menu2 ---------------------------------------------------------------------------- ID TITLE DESCRIPTION OPERATION 1 test1 hey test X
ios中怎样编写当textField输入框获得输入焦点时触发一个事件(函数) ios中怎样编写当textField输入框获得输入焦点时触发一个事件(函数)
ios UITextField
------解决方案-------------------- 不太清楚你的意思
如果想在uitextfield被点击获得焦点时捕捉这个事件,可以实现UITextfieldDelegat
新手新手,初学js,html,css,jq就不断麻烦
$(document).on(&pageinit&,function(){
$(&XXX&).bind()
这种绑定方法会在整个document每pageinit一次,就对xxx进行的某一事件进行绑定,而pageinit事件什么时候会触发,具体要如何解决,可以看链接 h
ios中怎样编写当textField输入框获得输入焦点时触发一个事件(函数) ios中怎样编写当textField输入框获得输入焦点时触发一个事件(函数)
------解决方案-------------------- 不太清楚你的意思
如果想在uitextfield被点击获得焦点时捕捉这个事件,可以实现UITextfieldDelegate的相关方法,这些方法是UITextfield的事件处理
言归正传,下面就来讲讲怎样动态注册按钮事件。 首先,我们需要设置变量来获取点击一个数字按钮的值,以便在“=”按钮单击事件中计算最终的结果。下面就是我开始的时候写的一段代码:
public double? value1 =//获取运算符前的数值 public double? value2 =//获取运算符前的数值 public type caltyp
/** * window.onresize 事件 专用事件绑定器 v0.1 Alucelx * /Alucelx/archive//2219263.html * &description& * 用于解决 lte ie8 & chrome 及其他可能会出现的 原生 window.resize 事件多次
怎样避免同一个activity被打开多次? 我有一个页面,点击通知栏来的新消息就跳到此页面,问题来了,当多个通知来了,都点击一次,有几个通知就会开一个页面,也就同时存在多个这个页面,怎么只存在最后一次的页面?
------解决方案-------------------- 离开页面时finish();
常见的处理方法是,在用户登录时,判断此用户是否已经在Application中存在,如果存在就报错,不存在的话就加到Application中(Application是所有Session共有的,整个web应用程序唯一的一个对象): 以下是引用片段:   string strUserId = username.T ArrayList list = Application.Get(&GL
今天用chrome提交一个表单时,发现一个奇怪的问题:
//提交表单 document.frmOrder.action = '/d.aspx'; document.frmOrder.method = 'POST'; document.frmOrder.target = '_blank'; document.frmOrder.submit()
这排准备写个自动更新和自动采集程序,要自动,只能在人多访问的地方放一个触发事件,因为自己的服务器是win主机,这和404触发是一样的,404怕搜索误认为做弊,所以不太敢用,唉,真是什么事都能完美
&scriptlanguage=javascript& document.onclick=function(e)&nbs
写这个主要是为了解决一些常见网页特效在js解析时预期与效果不同。
原始代码 :
//测试代码 window.onscroll = function(){ alert(&haha&); }
装在script标签内 鼠标滑动之后一直惦记 提示框才可以,所以很不方便 , 而且 目的是鼠标滑动后 只执行一次事件,这个效果显然和实际不符合吧。
//代码改进-
js中onchange事件是在客户端改变输入控件的值,比如一个textbox,会出发的一个事件。但是如果在js代码中改变一个textbox的value,而不是通过键盘输入改变一个textbox值的话,是不会出发onchange事件的。 那么,如何在js代码模式通过代码触发textbox控件的onchange事件呢,经过查阅资料,发现js提供了一个方法,可以触发控件的应该是所有事件。object.f
从一个表中查询某个字段出现多次的方法(某人帮写的)
有以下两种写法: 1.select a.`name`, driver_url from `schemas` a, ( select `name`, count(*) from `schemas` GROUP BY `name` HAVING count(*) &2 ) b where a.
listview adapter 控件注册点击事件,点击一个item后有其他item的这个控件响应了事件 在listview的adapter里面对某个组件注册监听,运行时处理事件是执行了,但是有其他的item里面的控件也响应了这个事件,我出现的情况是每隔2个item里面控件都执行了事件,就是第0,3,6个item出现相应。
由于我要做的是点击后对改控件做旋转处理,点击完后旋转是做了,下拉又发现其
1. onchange事件与onpropertychange事件的区别: onchange事件在内容改变(两次内容有可能相等)且失去焦点时触发;onpropertychange事件是实时触发,每增加或删除一个字符就会触发,通过js改变也会触发该事件,但是该事件是IE专有。 2. oninput事件与onpropertychange事件的区别: oninput事件是IE之外的大多数浏览器支持的事件,
在web页面开发时,我们经常会遇到下列情况:
1.一个标签仅仅是要触发onclick行为; 2.表现上要有鼠标的pointer指针显示,或者其他类似a标签的视觉效果。 比如执行删除操作时,为了避免误操作,我们要弹出对话框让用户确定是否删除。因此我们经常会用链接&a&&/a&形式代替&button& 触发onclick事件。 代码如下:
怎样避免同一个activity被打开多次? 我有一个页面,点击通知栏来的新消息就跳到此页面,问题来了,当多个通知来了,都点击一次,有几个通知就会开一个页面,也就同时存在多个这个页面,怎么只存在最后一次的页面?
------解决方案-------------------- 离开页面时finish();
Listview的item是一个HorizontalScrollView,则无法响应onItemClickListener监听器事件了。 如题。
是itemClick事件被什么拦截了吗?
------解决方案-------------------- HorizontalScrollView可滑动,需要做焦点屏蔽
------解决方案-------------------- Horizonta
何为冒泡事件就是当设定了多个div的嵌套时;即建立了父子关系,当父div与子div共同加入了onclick事件时,当触发了子div的onclick事件后,子div进行相应的js操作。但是父div的onclick事件同样会被触发。这就造成了事件的多层并发,导致了页面混乱。这就是冒泡事件。 消除冒泡事件的方法阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagatio
  会弄个性化图标的人,经常在看腻一个主题的时候,都会选择换一个主题,但是最悲剧的事情就是。我一换主题所有的个性化图标都要重新设置一次,有没有方法让我更换主题个性化图标还存在呢?   1、右键桌面空白处,选择个性化设置
  2、点击“更改桌面图标”、清除“允许的主题改变桌面图标”复选框,然后单击“确定”按钮。现在你的图标将被保留,唯一的方法是从类似的桌面对话框中手动改变它们。
  3、通过上面
使用asp.net,在刷新页面的时候会自动触发服务器端的事件。举个简单的例子,如:一个注册页面,我们填写完注册信息之后,如果按F5刷新之后,会自动触发到Button事件上,这样就造成了又注册了一次的麻烦。
我先前的解决方案:用关键字查询,如有相同,则提示已有此用户。
但是这种方案不能在没有表识的情况下使用,他会重新提交。鉴于此,我寻找了一种新的解决方案,很庆幸,在朋友的提点下,迸发了这样的解决
如何产生一个全局的按键事件? 我希望发送一个全局的keyEvent事件,请问要调用什么接口呢? addGlobalMonitorForEventsMatchingMask:handler 可以拦截全局的事件,但是怎么发送全局事件呢?
------解决方案--------------------
为什么不试试 通知 呢? 完全可以满足要求
------解决方案----
  使用asp.net,在刷新页面的时候会自动触发服务器端的事件。举个简单的例子,如:一个注册页面,我们填写完注册信息之后,如果按F5刷新之后,会自动触发到Button事件上,这样就造成了又注册了一次的麻烦。   我先前的解决方案:用关键字查询,如有相同,则提示已有此用户。   但是这种方案不能在没有表识的情况下使用,他会重新提交。鉴于此,我寻找了一种新的解决方案,很庆幸,在朋友的提点下,迸发了这
关于View多次layout后被系统recycle掉的问题! 项目中有个购物车的功能,类似于侧滑,但要默认显示出一部分出来,先前用的SlidingMenu,但是其setBehindOffset方法不好用,不能显示出来。又用的Animation+View的layout方法。但是现在出现第23次layout时,系统会recycle掉这个view。求各路大神有什么优化方案没。
------解决方案-
今天是写的是关于JQ的双击事件防止多次提交的问题,并且通过函数可以批量定义,通能性更强了,通过方法动态绑定元素的事件。而且可以动态传递函数名或者多参数等(本实例只传递函数名通过Eval调用)。
我们都知道在jQuery的事件绑定中,执行双击事件(dblclick)时能触发两次单击事件(click)。即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick
搞网站开发,最头疼的是js问题,倒不是php程序开发,前端的页面,js真是太让人折腾了,特别是js,你根本不知道哪里就会出问题,各种兼容也要兼顾,不像写程序,你只关心功能如何实现,逻辑怎么写。js文件一个出问题,就影响其他js的运行,今天就遇到一个很纠结的东西,一个js导致的莫名其妙的问题。 这个js是一个增强页面效果的功能,但是用了它,jquery在有的页面可以用,有的页面就失效了,用firef
于是乎,在日常的开发中大量使用连缀写法,而事件方法连缀就是一个特例。若给一个Dom对象使用了绑定了多个事件,便于阅读和书写,习惯了使用连缀写法,但这样的书写方式会造成时间的冗余。
1.事件冗余:多个事件方法中多次调用相同的代码 下面的代码是一个事件方法连缀的写法:
jQuery(function($) { $('&div id=&livetip&&
并且随页面大小的不同情况时好时坏,甚至代码位置的不同而不同。
火狐下一切正常。
解决办法是再onload触发前改变图片src的值,也就是相当于图片开始时有个临时的占位图片,页面载入过程中用js换成实际需要的src,只要每次onload事件触发前src发生变化,则onload表现正常。
1、one()方法功能是为所选的元素绑定一个仅触发一次的处理函数,其调用的语法格式为:one(type, [data], fn) 其中参数type为事件类型,即需要触发什么类型的事件;参数data为可选参数,表示作为event.data属性值传递给事件对象的额外数据对象;fn为绑定事件时所要触发的函数。 2、示例代码:
&!DOCTYPE html PUBLIC &quojavascript阻止scroll事件多次执行的思路及实现
字体:[ ] 类型:转载 时间:
阻止scroll事件多次执行主要是为了解决一些常见网页特效在js解析时预期与效果不同,感兴趣的朋友可以了解下
写这个主要是为了解决一些常见网页特效在js解析时预期与效果不同。 原始代码 :
代码如下: //测试代码 window.onscroll = function(){ alert("haha"); }
装在script标签内 鼠标滑动之后一直惦记 提示框才可以,所以很不方便 , 而且 目的是鼠标滑动后 只执行一次事件,这个效果显然和实际不符合吧。 //代码改进--增加延时器。 既然scroll事件是一个连续触发事件,那我设置一个延迟器,在用户滑动鼠标的时间后执行该函数 ,书不是就可以只执行一次啦 。
代码如下: //测试代码: function haha(){ alert("haha"); } window.onscroll = function(){ setTimeout(haha,500); }
结果发现该死的 还是和上面一样 要弹出很多的警告框--可见 scroll事件像队列一样排成一行 ,按顺序执行 ,所以此路不通,另想办法啊。 通过条件控制事件执行 ,这个是个不错的方法
代码如下: function haha(){ alert("haha"); } var tur = //创建条件 window.onscroll = function(){ if(tur){ setTimeout(haha,500); tur = } else {} }
庆幸的是,鼠标滚动执行一次代码 ,问题是 当再次滚动鼠标之后 ,事件再也不执行了。 原因就是条件被设置为false 所以后续的事件永远不执行了。 思路就是 条件判断+延迟执行 就可以解决这个问题。在事件执行之初,复活变量,事件执行完毕后 杀死变量。
代码如下: var tur = function haha(){alert("haha"); tur = } window.onscroll = function(){ if(tur){ setTimeout(haha,1000); tur = }else{ } }
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具js 点击事件重复执行是怎么解决?_百度知道RT,比如小弟需要一个按钮,你可以在短间隔内不停的点击,但是最终我只会触发最后一次点击效果,现在我是比较了2次点击的时间在间隔内不触发,然后再判断一个计时器大于间隔后触发一次,想请教各位是否有相关Jquery插件可以实现呢,或者怎么写更好?
回复讨论(解决方案)
事件函数里设置按钮状态为无效
$(this).attr(&disabled&,&&disabled&);
$(this).removeAttr(&disabled&);
事件函数里设置按钮状态为无效
并不是真正的button,用的是超链接触发的click事件
可能说的不是很清楚,我指的不触发并不是说让这个按钮失效,这个事件点击还会触发一个计数改值的操作,只是页面上的改值,当停止点击后才会真正的将先前最后一次修改的值调用后台插入
function&lockClick()&{
&&&&var&nowClick&=&new&Date();
&&&&if&(lastClick&==&null)&{
&&&&&&&&lastClick&=&nowC
&&&&&&&&return&
&&&&}&else&{
&&&&&&&&if&(Math.round((nowClick.getTime()&-&lastClick.getTime()))&&&500)&{
&&&&&&&&&&&&lastClick&=&nowC
&&&&&&&&&&&&return&
&&&&&&&&else&{
&&&&&&&&&&&&lastClick&=&nowC
&&&&&&&&&&&&return&false
function&aaa()&{
&&&&&if&(lockClick())&{
&&&&&&&&&&//调用后台插入
&&&&&}else{
&&&&&&&&&&//页面input的数值修改
只是想询问一下有没有更好的方法或者插件能够实现这样的事情
如果点击一直特别快,则
Math.round((nowClick.getTime()&-&lastClick.getTime()))&&&500&永远不成立,那岂不是一直不会“调用后台插入”?
如果点击一直特别快,则
Math.round((nowClick.getTime()&-&lastClick.getTime()))&&&500&永远不成立,那岂不是一直不会“调用后台插入”?
误会了,比如我要增加库存数量,我可能连点10下,并不会永远不触发的
如果点击一直特别快,则
Math.round((nowClick.getTime()&-&lastClick.getTime()))&&&500&永远不成立,那岂不是一直不会“调用后台插入”?
因为必定会有最后一次停止触发,一旦他停止了,我就会有触发器触发它执行插入,只是上面的代码里没有加入触发器而已
你可以这样!&发生click事件后,移除click事件,向按钮绑定mousedown事件,如果在不允许的时间内发生了mousedown事件,则从新将原有click事件绑定到元素上。若超过了不允许事件发生了mousedown事件,则执行任务代码!
jQueryObject.click(function()&{
&&&&&&&&//解除绑定的click事件
&&&&&&&&//绑定mousedown事件
&&&&&&&&jQueryObject.mousedown(function(){
&&&&&&&&&&&&&&&&if(规定时间内发生了mousedown事件)&{
&&&&&&&&&&&&&&&&&&&&&//解除绑定的mousedown事件
&&&&&&&&&&&&&&&&&&&&&//绑定click()事件
&&&&&&&&&&&&&&&&}&else&{
&&&&&&&&&&&&&&&&&&&&&&&&//执行想要的操作
&&&&&&&&&&&&&&&&}
&&&&&&&&})
散分了吧,我还是换另一种方式写吧~~~
你不可能避免计算两次点击的时间差,这是我的代码,作为参考吧
$('body').on('click',function(){
var&that=$(this);
that.data('rt',(new&Date).getTime());
setTimeout(function(){var&d=(new&Date).getTime();&if(d-that.data('rt')&500)&console.log('后台执行')},501);

我要回帖

更多关于 你不知道的javascript 的文章

 

随机推荐