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实现的简单小巧的多级联动菜单
Mar 24 Javascript
javascript add event remove event
Apr 07 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
Mar 05 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
Aug 08 Javascript
全面解析标签页的切换方式
Aug 21 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
Dec 26 Javascript
jquery Ajax实现Select动态添加数据
Jun 08 jQuery
three.js中文文档学习之通过模块导入
Nov 20 Javascript
第一个Vue插件从封装到发布
Nov 22 Javascript
JS实现方形抽奖效果
Aug 27 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
Sep 30 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
Mar 28 jQuery
为指定元素增加样式的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实现单链表的实例代码
2013/03/22 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
javascript数组的使用
2013/03/28 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
Spring MVC中Ajax实现二级联动的简单实例
2016/07/06 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
Bootstrap table使用方法详细介绍
2016/12/09 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
angularJS模态框$modal实例代码
2017/05/27 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
详解Python中__str__和__repr__方法的区别
2015/04/17 Python
python二元表达式用法
2019/12/04 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
快速了解Python开发环境Spyder
2020/06/29 Python
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
小学生个人先进事迹材料
2014/05/08 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
租赁协议书
2015/01/27 职场文书
王亚平太空授课观后感
2015/06/12 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书