jQuery:事件操作(二)
来源:互联网 发布:淘宝买药是货到付款吗 编辑:程序博客网 时间:2024/06/13 00:50
四、移除事件
我们可以为同一个元素绑定多个事件,也可以为多个元素绑定同一个事件。
假设网页上有一个<button>元素,使用如下代码为该元素绑定多个事件。
<button id="but">点击我</button> <div id="test"></div> <script> $(function(){ $("#but").bind("click",function(){ $("#test").append("<p>我的绑定函数1</p>"); }).bind("click",function(){ $("#test").append("<p>我的绑定函数2</p>"); }).bind("click",function(){ $("#test").append("<p>我的绑定函数3</p>"); }) }) </script>
当单击按钮都,会出现如图效果
下面我们来移除他们。
首先在网页上添加一个事件的按钮
1、移除按钮元素上以前注册的事件
第一个参数是事件类型,第二个参数是要移除的函数(1)若没有参数,删除所有绑定事件(2)若提供了事件类型作为参数,则只删除该类型的绑定事件(3)若都传递,则只有这个特定的事件处理函数会被删除注:对于只需要触发一次,之后就解绑的情况,jQuery提供了one()方法,可以为元素绑定处理函数,触发一次之后,立即删除one()方法的结构与bind()方法类似,使用方法也与bind()方法类似,语法结构: one(type [,data] ,fn);例:移除上面例子中的全部事件unbind([type][ , data]);
首先在网页上添加一个事件的按钮
<button id="delALL">删除所有事件</button>最后需要为该事件编写处理函数用于删除元素的所有click事件,代码如下
$("dellALL").click(function(){$("btn").unbind("click");});因为元素绑定的都是click事件,所以不写参数也可以达到相同的目的,代码如下
$("dellALL").click(function(){$("btn").unbind();});2、移除<button>元素的其中一个事件
首先需要为这些匿名函数指定一个变量。
五、模拟操作:trigger()
1、常用模拟使用trigger()方法完成模拟操作:
$("#btn").trigger("click"); // 触发id为btn的click事件//
也可以简化:$("#btn").click();2、触发自定义事件
trigger()方法不仅可触发浏览器支持的具有相同名称的事件,也可以触发自定义名称的事件
trigger(type,[data])方法有两个参数,第一个参数是要触发的事件类型,第二个参数是要传递给事件处理函数的附加数据,以数组形式传递。通常可以通过传递一个参数给回调函数来区别这次事件是代码触发,还是用户触发
例:
trigger()方法触发事件后,还会执行浏览器默认操作,例如:
例:为某元素绑定“myClick”的事件
3、传递数据$('#btn').bind("myClick",function(){ $('#test').append("<p>我的自定义事件</p>");});$('#btn').trigger("myClick"); //触发这个事件
trigger(type,[data])方法有两个参数,第一个参数是要触发的事件类型,第二个参数是要传递给事件处理函数的附加数据,以数组形式传递。通常可以通过传递一个参数给回调函数来区别这次事件是代码触发,还是用户触发
例:
$('#btn').bind("myClick",function(event,message1,message2){ //获取数据 $('#test').append("<p>"+message1+message2+"</p>");});$('#btn').trigger("myClick",["我的自定义","事件"]); //传递两个数据4、执行默认操作
trigger()方法触发事件后,还会执行浏览器默认操作,例如:
$('input').trigger("focus");
以上代码不仅会触发绑定在input上的focus事件,也会使input元素获得焦点(这是浏览器的默认操作)。
而使用triggerHandler()方法可以只触发事件,而不执行浏览器默认操作,例:
$('input').triggerHandler("focus");
只会触发绑定事件,不会使input元素获得焦点
六、其他用法
1、绑定多个事件类型
例:$(function(){ $("div").bind("mouseout mouseover",function(){ $(this).toggleClass("over"); });};当光标滑入<div>元素时,该元素的class切换为“over”;当光标滑出<div>元素时,class切换为先前的值。
2、添加事件命名空间,便于管理
$(function(){ $('div').bind("click.plugin",function(){ $('body').append("<p>click事件</p>"); }); $('div').bind("mouseover.plugin",function(){ $('body').append("<p>mouseover事件</p>"); }); $('div').bind("dbclick",function(){ $('body').append("<p>dbclick事件</p>"); }); $('button').click(function(){ $('div').unbind(".plugin"); });});在所绑定的事件后面添加命名空间,删除时只需要指定命名空间即可,单击<button>后,plugin的命名空间被删除,而不再plugin空间中的dbclick事件依然存在。
3、相同事件名称,不同命名空间执行方法
若两者都要触发,改为如下代码:$(function(){ $('div').bind("click",function(){ $('body').append("<p>click事件</p>"); }); $('div').bind("click.plugin",function(){ $('body').append("<p>click.plugin事件</p>"); }); $('button').click(function(){ $('div').trigger("click!"); //注意感叹号 });});单击<div>元素后,会同时触发click事件和click.plugin事件,若只单击<button>则只触发click事件,不触发click.plugin事件,注意trigger("click!")后面的感叹号的作用是匹配所有不包含命名空间中的click方法
$("div").trigger("click");
阅读全文
0 0
- jQuery:事件操作(二)
- JQuery 操作(二)
- jQuery 事件机制(二)
- jQuery的事件(二)
- jQuery事件绑定(二)
- jQuery 之 (二)事件操作、jq对文档的操作、属性选择器使用
- jQuery:事件操作(一)
- JQuery使用(二)(事件)
- JQuery框架方法事件大全(二)
- jQuery学习笔记(二)选择器 事件
- jQuery学习笔记(二)基础事件
- jQuery事件二
- jQuery--事件篇(二)
- jQuery——事件操作(一)
- jquery操作事件
- JQuery之事件操作
- jQuery操作dom事件
- jQuery事件操作
- jQuery省市区三级联动
- 纯JS省市区三级联动
- poj 2431 解题记录
- java 打包项目为jar文件 并运行 外部配置文件
- Reinforcement Learning: Planning by DP
- jQuery:事件操作(二)
- 直接使用Sublime Text实现:HTTP访问URL+格式化返回的JSON字符串
- Django分页后,序号如何按照数据自增
- jQuery:动画大全
- Sssion与Cookie基本原理
- 浅谈HTTP中Get与Post的区别
- 基于vue2.0以及better-scroll实现scroll滑动组件及所实现组件的应用例子
- mysql installed big problem: table mysql.host not existence!
- 语音交互中的“等待体验”研究