jQuery 相关控件的事件操作分解


Posted in Javascript onAugust 03, 2009

今天突然对他的事件产生了兴趣,先前也碰到过,也没整理,今天有空就弄一下咯。

对于控件的事件,jQuery已经提供了丰富的方法,包括绑定、一次绑定、触发等,阿拉今早看看叫一哪能用额伐,大虾路古就可以了。

jQuery的绑定事件非常方便,有bind、live、one还有它帮你把一些常用的事件给单独了出来,比如控件的onclick事件,我们绑定onclick事件的时候只需要

$("#testButton").click(function() { 
alert("I'm Test Button"); 
});

就这样我们在testButton这个按钮上绑定了onclick事件,执行alert语句。我们也可以使用$("#testButton").click();来触发这个onclick事件,一切都非常ok啦。以上有点sb了,接下来看看取消事件。jQuery有unbind的方法,专门来取消绑定的,也就是取消事件,按照上面的例子的话,应该使用:$("#testButton").unbind("click");恩,看上去非常好,如果你的click有2个事件的话,你还可以使用unbind("click", fnName)来删除特定函数的绑定。为什么有这个取消特定函数的方法呢,我们来看下例子,我们会发现,javascript的事件,跟C#的事件如出一辙,事件的绑定是叠加(+=) 而不是覆盖。
var Eat = function() { 
alert("我要吃饭"); 
} var PayMoney = function() { 
alert("先付钱"); 
} 
jQuery(document).ready(function() { 
$("#testButton").click(Eat); 
$("#testButton").bind("click", PayMoney); 
});

通过上面的例子,我们发现会先弹出:“我要吃饭”紧接着会弹出“先付钱”,说明它的绑定是通过onclick+=fn进行的。我们修改下ready的方法:
jQuery(document).ready(function() { 
$("#testButton").click(Eat); 
$("#testButton").unbind(); 
$("#testButton").bind("click", PayMoney); 
});

又出错了,呵呵,这次点击按钮的话,只会执行PayMoney,不会执行Eat,那如果把unbind()放在bind后面的话,这样这个按钮就不会起作用了。但如果我要去掉绑定的PayMoney方法呢?这时候我们应该这样写:
jQuery(document).ready(function() { 
$("#testButton").click(Eat); 
$("#testButton").bind("click", PayMoney); 
$("#testButton").unbind("click", PayMoney); 
});

嘿嘿,跟bind其实一个样,不过接下来你将看到一个bug(我不知道算不算),让我们近距离体验一下
<input id="testButton" type="button" value="Test Button" onclick="Eat();" />  
<script type="text/javascript">  
jQuery(document).ready(function() { 
$("#testButton").unbind("click", Eat); 
$("#testButton").unbind(); 
$("#testButton").bind("click", PayMoney); 
}); 
</script> 

大家猜猜,会显示什么?吃饭?付钱?答案是Eat -> PayMoney,啊!!!我这里取消了绑定,又删除了特定的绑定,为什么还会执行Eat呢?其中的原由要看jQuery的类库了,我估计它只删除了通过JQuery绑定的那些事件了,呵呵。那这时候我们该如何呢?好在jQuery有很多方法,其中一个就是attr,他是对Dom元素的属性进行操作,我们利用attr来消除input上的click事件。 $("#testButton").attr("onclick", "");这样就可以把onclick事件清除了,记住,attr上因为是元素的属性,所以这里要写 “onclick” 而不是click,因为click是jQuery封装好的简写方式。好了,绑定就到这里了,弄个场景,大家也好记得住点:一日,老应、老赵、老陈出去吃饭,吃饱了,喝足了,准备付钱了,这时候
:<head>  
    <script type="text/javascript" src="jquery-1.2.6.min.js"></script>  
    <script type="text/javascript">  
        var PayMoney = function(name) {   
            alert(name + ":今天我请客,我来付钱");   
        }   
        jQuery(document).ready(function() {   
            $("#JeffreyPay").attr("onclick", "");   
            $("#JamesPay").attr("onclick", "");   
            $("#JeffreyPay").click(function() {   
                alert("。。。。这里不能刷卡");   
            });   
            $("#JeffreyPay").click(function() {   
                PayMoney("陈大");   
            });   
            $("#JamesPay").bind("click", function() {   
                alert("。。。。忘记带钱包了");   
            });   
            $("#JamesPay").bind("click", $("#DlyingPay").attr("onclick"));   
        });   
    </script>  
</head>  
<body>  
    <input id="JeffreyPay" onclick="PayMoney('赵帅');" type="button" value="老赵付钱" />  
    <input id="JamesPay" type="button" onclick="PayMoney('老应');" value="老应付钱" />  
    <input id="DlyingPay" type="button" onclick="PayMoney('陈大');" value="老陈付钱" />  
</body> 

以上内容均为原创,不要用在邪恶的地方哦。其实在绑定事件上还存在很多bug,大家可以稍微修改下上面的效果就会知道了,比如自动执行,绑定失败等,呵呵。
Javascript 相关文章推荐
建议大家看下JavaScript重要知识更新
Jul 08 Javascript
jquery 清空file域示例(兼容个浏览器)
Oct 11 Javascript
jQuery之字体大小的设置方法
Feb 27 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
Apr 02 Javascript
webix+springmvc session超时跳转登录页面
Oct 30 Javascript
BootStrap 可编辑表Table格
Nov 24 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
Feb 13 Javascript
ES6中Symbol类型用法实例详解
Apr 06 Javascript
jquery.uploadView 实现图片预览上传功能
Aug 10 jQuery
微信小程序页面生命周期详解
Jan 31 Javascript
js正则表达式简单校验方法
Jan 03 Javascript
vue3.0 自适应不同分辨率电脑的操作
Feb 06 Vue.js
利用javascript实现一些常用软件的下载导航
Aug 03 #Javascript
jQuery 隔行换色 支持键盘上下键,按Enter选定值
Aug 02 #Javascript
一句话JavaScript表单验证代码
Aug 02 #Javascript
JavaScript 关键字屏蔽实现函数
Aug 02 #Javascript
Javascript 验证上传图片大小[客户端]
Aug 01 #Javascript
Javascript 汉字字节判断
Aug 01 #Javascript
JS 面向对象的5钟写法
Jul 31 #Javascript
You might like
谈谈新手如何学习PHP
2006/12/14 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
轻量级 JS ToolTip提示效果
2010/07/20 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
详解Python中__str__和__repr__方法的区别
2015/04/17 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
python列表推导式操作解析
2019/11/26 Python
python实现在线翻译功能
2020/03/03 Python
python3.5的包存放的具体路径
2020/08/16 Python
Python如何实现机器人聊天
2020/09/10 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
安全生产投入制度
2014/01/29 职场文书
《将心比心》教学反思
2014/04/08 职场文书
保护环境建议书300字
2014/05/13 职场文书
给学校的建议书范文
2014/05/15 职场文书
学校教师安全责任书
2014/07/23 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
Python实现制作销售数据可视化看板详解
2021/11/27 Python