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退出each循环的写法
Feb 26 Javascript
jQuery实现冻结表格行和列
Apr 29 Javascript
jquery if条件语句的写法
May 19 Javascript
浅谈jQuery 选择器和dom操作
Jun 07 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
Aug 29 Javascript
深入理解jQuery.data() 的实现方式
Nov 30 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
Dec 01 Javascript
Bootstrap整体框架之JavaScript插件架构
Dec 15 Javascript
JavaScript的事件机制详解
Jan 17 Javascript
vue自定v-model实现表单数据双向绑定问题
Sep 03 Javascript
vue父子组件通信的高级用法示例
Aug 29 Javascript
Vue+ElementUI table实现表格分页
Dec 14 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简单提示框alert封装函数
2010/08/08 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
Python中运行并行任务技巧
2015/02/26 Python
浅谈python中的面向对象和类的基本语法
2016/06/13 Python
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
一个C/C++编程面试题
2013/11/10 面试题
枚举与#define宏的区别
2014/04/30 面试题
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
中专药剂专业应届毕的自我评价
2013/12/27 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
关于读书的活动方案
2014/08/14 职场文书
个人工作表现评价材料
2014/09/21 职场文书
人大代表选举标语
2014/10/07 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
交通事故案件代理词
2015/05/23 职场文书
2016年公司新年寄语
2015/08/17 职场文书
python读取mat文件生成h5文件的实现
2022/07/15 Python
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers