当前位置: 首页 > 图文教程 > 网络编程 > Javascript > jquery 事件执行检测代码

Javascript
如何用js控制css中的float的代码
Autocomplete Textbox Example javascript实现自动完成成功
FormValid0.5版本发布,带ajax自定义验证例子
wordpress之js库集合研究介绍
推荐发几个常用控件(新加DHTML控件)
7. Microsoft Online-Crash Control, version 6.0(微软在线崩溃控件)
javascript下阻止表单重复提交、防刷新、防后退
javascript下计数器每秒自动加1
给所有的超级练级都加上onmousemove时间的js代码
js实现运行代码需要刷新的解决方法
兼容FF/IE跟随鼠标的层的效果
用javascript获得css中的属性值的代码
用javascript实现页内搜索的脚本代码
用javascript 控制表格行的展开和隐藏的代码
用javascript实现隐藏状态栏的代码
Code: write(s,d) 输出连续字符串
javascript创建页面蒙板的一些知识技巧总结
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
用javascript判断输入数据是否货币并自动添加¥符号的代码
js类中获取外部函数名的方法

Javascript 中的 jquery 事件执行检测代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 469 ::
收藏到网摘: n/a

在写Web 应用,或者Web Ajax功能的时候我们经常需要处理事件,jquery已经非常完美的封装了事件,但是有时候事件的执行顺序还是会有微小差别 前两天做城市搜索的时候,我对搜索按钮绑定了事件,如果输入栏内的文字不符合要求就用标签提示(标签展示出来后对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/tech/20100110/20100110112317_08419be897405321542838d77f855226.gif" />
<input type="text" id="name" value="测试" />
<span id="info">ffffffff</span>
</body>
</html>

效果截图