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 相关文章推荐
重定向实现代码
Nov 20 Javascript
IE与Firefox下javascript getyear年份的兼容性写法
Dec 20 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
Jan 11 Javascript
使用jquery.qrcode生成彩色二维码实例
Aug 08 Javascript
使用jQuery管理选择结果
Jan 20 Javascript
JavaScript整除运算函数ceil和floor的区别分析
Apr 14 Javascript
javascript css红色经典选项卡效果实现代码
May 17 Javascript
JavaScript学习笔记整理_关于表达式和语句
Sep 19 Javascript
关于微信上网页图片点击全屏放大效果
Dec 19 Javascript
详解使用fetch发送post请求时的参数处理
Apr 05 Javascript
基于JavaScript判断两个对象内容是否相等
Jan 10 Javascript
js制作提示框插件
Dec 24 Javascript
模拟电子签章盖章效果的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
关于crontab的使用详解
2013/06/24 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
jQuery 选择器理解
2010/03/16 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
2013/12/24 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
python实现日志按天分割
2019/07/22 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
物业管理计划书
2014/01/10 职场文书
给交警的表扬信
2014/01/12 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
售后服务承诺书范文
2014/03/26 职场文书
班风学风建设方案
2014/05/06 职场文书
班级文化标语
2014/06/23 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
西安事变观后感
2015/06/12 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
MySQL慢查询的坑
2021/04/28 MySQL