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 相关文章推荐
prototype与jquery下Ajax实现的差别
Sep 13 Javascript
jQuery-Tools-overlay 使用介绍
Jul 14 Javascript
js为什么不能正确处理小数运算?
Dec 29 Javascript
jQuery调用Webservice传递json数组的方法
Aug 06 Javascript
jQuery ajaxForm()的应用
Oct 14 Javascript
使用jquery给新生的th绑定hover事件的实例
Feb 10 Javascript
JS实现随机生成10个手机号的方法示例
Dec 07 Javascript
Vue自定义属性实例分析
Feb 23 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
Apr 29 Javascript
js实现图片无缝循环轮播
Oct 28 Javascript
js+h5 canvas实现图片验证码
Oct 11 Javascript
ES2020让代码更优美的运算符 (?.) (??)
Jan 04 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与ASP
2006/10/09 PHP
PHP写MySQL数据 实现代码
2009/06/15 PHP
PHP自定义多进制的方法
2016/11/03 PHP
什么是PHP7中的孤儿进程与僵尸进程
2019/04/14 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
js下用gb2312编码解码实现方法
2009/12/31 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
jQuery基本选择器选择元素使用介绍
2013/04/18 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
[05:05]第三天的dota2
2013/07/29 DOTA
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
Django中使用group_by的方法
2015/05/26 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
python 发送json数据操作实例分析
2019/10/15 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
大学校庆策划书
2014/01/31 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
大学生励志演讲稿
2014/04/25 职场文书
2014年作风建设心得体会
2014/10/22 职场文书
外贸业务员岗位职责
2015/02/13 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python