jquery 事件执行检测代码


Posted in Javascript onDecember 09, 2009

前两天做城市搜索的时候,我对搜索按钮绑定了事件,如果输入栏内的文字不符合要求就用标签提示(标签展示出来后对document绑定click,点击后隐藏标签)并使输入栏获得焦点。就这样一个小功能我调试了、3个多小时,IE 里表现的是标签一闪而过,后来发现是按钮的点击事件和input的交替出发了多次,估计是事件回退发生的,用了preventDefault() 和 stopPropagation()两个函数后修正了问题。虽然问题解决了,但是事件的执行顺序真是很难掌握呀,于是我做了个简单的事件监测函数,可以自动记录页面事件触发,见如下代码(首先肯定要引入jquery!...)

//事件执行监测 
function eventsMonitor(op){ 
var defaultSetting = { 
eventsStr: "click focus blur", 
splitStr: " ", 
css:{ 
"border":"1px red solid", 
"z-index":9000000, 
"background":"white", 
"position":"absolute", 
width:400, 
height:200, 
"overflow-x":"hidden", 
"overflow-y":"auto" 
} 
}; 
var ops = $.extend(true,defaultSetting,op); 
$('<div id="DivForLogEvents"><div></div><div>').appendTo("body").css(ops.css); 
var $infolog = $("#DivForLogEvents div:eq(0)"); 
$.each(ops.eventsStr.split(ops.splitStr),function(i,v){ 
if(v != 'resize') 
$("*:not('#DivForLogEvents')").bind(v, function(e){ 
if(!$(e.target).is("#DivForLogEvents") && !$(e.target).is($infolog)){ 
$infolog.append((e.target.nodeName||" ") + "->" + (e.target.id||e.target.Name||" ") + " "+v+" event!<br>"); 
$("#DivForLogEvents:not(:animated)").animate({scrollTop:$infolog.height()},300); 
} 
}); 
else 
$(window).bind('resize', function(e){ 
if(!$(e.target).is("#DivForLogEvents") && !$(e.target).is($infolog)){ 
$infolog.append((e.target.nodeName||" ") + "->" + (e.target.id||e.target.Name||" ") + " "+v+" event!<br>"); 
$("#DivForLogEvents:not(:animated)").animate({scrollTop:$infolog.height()},300); 
} 
}); 
}); 
}

调用方法示例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Untitled Document</title> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script><!--Google CDN--> 
<script type="text/javascript" src="eventsMonitor.js"></script><!--Google CDN--> 
<script type="text/javascript"> $(document).ready(function(){ 
eventsMonitor({ 
css:{top:0,right:20}, 
eventsStr:"click blur focus select scroll mousewheel resize" 
}); 
$("#info").click(function(){$(this).text($("#DivForLogEvents").outerHeight());}); 
}); 
</script> 
</head> 
<body> 
Hello world 
<img src="/upload/2009-12/20091209042029557.gif" /> 
<input type="text" id="name" value="测试" /> 
<span id="info">ffffffff</span> 
</body> 
</html>

效果截图

jquery 事件执行检测代码

Javascript 相关文章推荐
jquery Firefox3.5中操作select的问题
Jul 10 Javascript
jquery 使用点滴函数代码
May 20 Javascript
getElementByIdx_x js自定义getElementById函数
Jan 24 Javascript
jquery validate poshytip 自定义样式
Nov 26 Javascript
Javascript中valueOf与toString区别浅析
Mar 19 Javascript
JavaScript仿商城实现图片广告轮播实例代码
Feb 06 Javascript
JavaScript数组去重的两种方法推荐
Apr 05 Javascript
vue 动态绑定背景图片的方法
Aug 10 Javascript
使用D3.js构建实时图形的示例代码
Aug 28 Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
Sep 10 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
Apr 24 Javascript
简单了解JavaScript sort方法
Nov 25 Javascript
为指定元素增加样式的js代码
Dec 09 #Javascript
javascript setTimeout和setInterval 的区别
Dec 08 #Javascript
javascript OFFICE控件测试代码
Dec 08 #Javascript
JavaScript Cookie 直接浏览网站分网址
Dec 08 #Javascript
JavaScript Cookie显示用户上次访问的时间和次数
Dec 08 #Javascript
JavaScript 利用Cookie记录用户登录信息
Dec 08 #Javascript
JavaScript Cookie的读取和写入函数
Dec 08 #Javascript
You might like
优化PHP代码的53条建议
2008/03/27 PHP
PHP三层结构(上) 简单三层结构
2010/07/04 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
2020/05/27 Javascript
[22:07]DOTA2-DPC中国联赛 正赛 iG vs Magma 选手采访
2021/03/11 DOTA
简单了解什么是神经网络
2017/12/23 Python
python @property的用法及含义全面解析
2018/02/01 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
优秀高中生事迹材料
2014/02/11 职场文书
八年级语文教学反思
2014/02/11 职场文书
财务会计自荐信范文
2014/02/21 职场文书
奥利奥广告词
2014/03/20 职场文书
新闻编辑求职信
2014/07/13 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android
Tomcat用户管理的优化配置详解
2022/03/31 Servers