jquery中的事件处理详细介绍


Posted in Javascript onJune 24, 2013

1.页面载入完毕响应事件
所谓页面载入完毕是指DOM元素载入就绪了,能够被读取和操作了。
①jQuery中的$(doucument).ready()事件
ready(fn)是jQuery事件模块中最重要的一个函数。这个方法可以看作是对window.onload注册事件的替代方法。通过使用这个方法,可以在DOM载入就绪时立刻调用所绑定的函数,而几乎所有的javaScript函数都是需要在那一刻执行。
ready(fn) 返回值:Object 参数-fn:要在DOM载入就绪时执行的参数Function 当DOM载入就绪时绑定一个要执行的函数
而它有一种很简单的缩写形式$(document).ready(function(){}) => $(function(){})
②window.onload()事件和$(document).ready()事件的比较
window.onload()=function(){}
如果使用多个window.onload(),则只有最后一个绑定的函数能被执行,它将覆盖前面所有window.onload()绑定的函数。
如果使用多个$(),则它们都能被执行。
需要注意的是如果<body onload> body标签的onload事件已经注册了某个函数 则$()事件注册的函数将不会被执行

2.绑定与反绑定事件监听器
①绑定事件
⑴bind(type,[data],fn)函数
就是将某函数与某元素的某事件绑定在一起 $("#id").click(function(){})就是将一个匿名函数与id元素的click事件绑在一起
但上面的例子其实只是缩写形式,因为其是简单常用的事件绑定,正规写法应如下:
$("#id").bind("click",[data],function(){})
bind(type,[data],fn) 返回值:Object 参数-type:事件类型String data:可选,作为event.data属性值传递给后面fn的实参Object fn:绑定到事件上的函数Function
⑵为处理函数传递参数
这里用到bind()函数的第二个参数及event.data属性为fn函数传递参数

<input id="Text2" type="text" /> 
$("#Text2").bind("click",{first:"1",second:"2"},function(event){ 
if(event.data.first=="1"){$(this).val("欢迎光临")} 
if(event.data.second=="1"){$(this).val("")} 
}); 
})

第二个参数为一个json对象,在fn函数中通过event.data通过键名获得参数值
⑶阻止浏览器默认的行为
有时bind绑定的函数会与浏览器默认的操作冲突,这时如果想阻止浏览器默认的操作,只需在fn后面加一句return false;
$("form").bind("submit",function(){return false;})

②反绑定事件
就是解除与某元素的某事件绑定在一起的某函数
unbind([type],[fn名]) 返回值:Object 参数-type:事件类型String fn名:要被解除绑定的函数名Function
以上俩参数都是可选参数 如果参数为空,就是解除所有匹配元素的所有事件所绑定的函数
$(function(){$("#btn1").click(function(){ 
$("input[type=text]").unbind()}) 
})

单击btn1后,解除所有为type=text文本框的事件绑定的所有函数
③一次性的事件绑定
就是为某元素的某事件所绑定的某函数只能被执行一次
one(type,[data],fn) 返回值:Object 参数-type:事件类型String data:可选,作为event.data属性值传递给后面fn的实参Object fn:绑定到事件上的函数Function
使用与bind()函数一致,不同之处就是one里的fn只能被执行一次。

3.事件触发器
上述绑定的一些函数,需要用户执行一定的操作才会被执行,如click事件绑定的函数需要用户单击相应的元素才会被执行。但事件触发器可以用代码模拟用户的操作动作进而执行事件所绑定的函数,而不需要用户进行某些操作。
trigger(type,[data]) 返回值:Object 参数-type:事件类型String data:可选,传递给所触发的事件所绑定的函数的实参Array(是一个javascript数组) 触发所匹配的元素的某类事件所绑定的所有函数,当这类事件与浏览器的默认操作冲突时该事件触发器会执行浏览器默认的操作

<input id="Text1" type="text" value="输入用户名" /> 
<input id="Text2" type="text" /> 
$(function(){$("#Text1").bind("click",function(){$(this).val("")})}) 
$(function(){$("#Text2").click(function(event,pamas1,pamas2) 
{$(this).val("trigger事件触发器"+pamas1+pamas2)}) 
}) 
$(function(){$("input[type=text]").trigger("click",["1","2"])})

如上代码,虽然为俩文本框的单击事件绑定了函数,可最后一句代码也为这俩文本框的单击事件设置了触发器,所以不需要用户单击相应的文本框就能执行它们的单击事件所绑定的函数。另外该触发器还为它所触发的函数传递了参数,是一个javascript数组,可以在Text2的单击函数里看到参数的获得。
trigger函数所触发的事件与浏览器的默认操作冲突时该事件触发器会执行浏览器默认的操作,而triggerHandler函数则不会执行浏览器默认的操作。
triggerHandler(type,[data]) 与trigger的使用一致

4.事件的交互处理
①hover:模仿鼠标悬停
hover(over,out) 返回值:Object 参数-over:鼠标移到元素上触发的函数Function out:鼠标移出元素触发的函数Function

<input type="text" id="hover1" /><span id="hoverpd" style="display:none;">判断用户输入</span> 
$(function(){$("#hover1").hover(function(){ 
$("#hoverpd").show();},function(){ 
$("#hoverpd").hide();}) 
})

②toggle:多次单击的循环响应
为匹配的元素的单击事件添加许多绑定函数,这些函数随着不停的单击该元素而循环执行
toggle(fn1,fn2,fn3...) 返回值:Object 参数-fn1,fn2,fn3...要循环的函数Function
<input type="button" id="toggle1" value="toggle"/> 
var i=0; 
$(function(){$("#toggle1").toggle(function(){i++;$("#hover1").val(i)}, 
function(){i=i+2;$("#hover1").val(i)}) 
})

5.jQuery的内置事件类型
①jQuery内置事件函数的两种声明方式
不带参数的事件函数-事件类型名() 模拟了用户的操作
带参数的事件函数-事件类型名(事件函数)
$($("#id").click(function(){})) 带参数的事件函数
$($("#id").click(function(){}); $("#id").click();) 不带参数的事件函数-不单击#id也会执行相应函数 即模拟了用户操作
②jQuery内置事件类型分类
⑴浏览器相关事件
error(fn) 匹配元素发生错误时触发某函数,error事件没有标准,如当图像src无效时会触发图像的error事件
load(fn) 匹配元素加载完后触发某函数,如window是在所有DOM对象加载完才触发,其他单个元素是在单个元素加载完后触发
unload(fn)
resize(fn) 匹配元素改变大小时触发某函数
scroll(fn) 滚动条发生变化时触发
⑵表单相关事件
change(fn) 在匹配元素失去焦点时触发,也会在元素获得焦点后触发
select(fn) 当用户在文本框中选中某段文字时触发
submit(fn) 提交表单时触发
⑶键盘操作相关事件
keydown(fn) 键盘按下时触发
keypress(fn) 键盘按下又弹起时触发 顺序是keydown->keyup->keypress
keyup(fn) 键盘弹起时触发
⑷鼠标操作相关事件
click(fn) 顺序是mousedown->mouseup->click
mousedown(fn)
mouseup(fn)
dblclick(fn)
mouseover(fn)
mouseout(fn)
mousemove(fn) 在匹配元素上移动时触发,事件处理函数会被传递一个变量--事件对象(其clientX,clientY属性代表鼠标坐标)
⑸界面显示相关事件
blur(fn) 匹配元素失去焦点时触发 即可是鼠标 也可使Tab键
focus(fn)
Javascript 相关文章推荐
javascript 控制弹出窗口
Apr 10 Javascript
javascript下IE与FF兼容函数收集
Sep 17 Javascript
导航跟随滚动条置顶移动示例代码
Sep 11 Javascript
jQuery获得内容和属性方法及示例
Dec 02 Javascript
JS HTML5拖拽上传图片预览
Jul 18 Javascript
AngularJs directive详解及示例代码
Sep 01 Javascript
JQuery手速测试小游戏实现思路详解
Sep 20 Javascript
Javascript Function.prototype.bind详细分析
Dec 29 Javascript
详谈JavaScript的闭包及应用
Jan 17 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
Aug 01 Javascript
基于原生js实现判断元素是否有指定class名
Jul 11 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
Dec 30 Vue.js
模拟电子签章盖章效果的jQuery插件源码
Jun 24 #Javascript
Js注册协议倒计时的小例子
Jun 24 #Javascript
通过JavaScript使Div居中并随网页大小改变而改变
Jun 24 #Javascript
jquery入门必备的基本认识及实例(整理)
Jun 24 #Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
Jun 24 #Javascript
解析js如何获取当前url中的参数值并复制给input
Jun 23 #Javascript
Ajax异步提交表单数据的说明及方法实例
Jun 22 #Javascript
You might like
Zend Framework入门知识点小结
2016/03/19 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
JS trim去空格的最佳实践
2011/10/30 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
下载官网python并安装的步骤详解
2019/10/12 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
联想德国官网:Lenovo Germany
2018/07/04 全球购物
应届生船舶驾驶求职信
2013/10/19 职场文书
精彩的大学生自我评价
2013/11/17 职场文书
年会活动策划方案
2014/01/23 职场文书
领导工作表现评语
2015/01/04 职场文书
居安思危观后感
2015/06/11 职场文书
初中团支书竞选稿
2015/11/21 职场文书
家电创业计划书
2019/08/05 职场文书
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python