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 DOM编程艺术笔记
Nov 15 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
Apr 29 Javascript
用js模拟struts2的多action调用示例
May 19 Javascript
javascript中动态函数用法实例分析
May 14 Javascript
JavaScript中pop()方法的使用教程
Jun 09 Javascript
深入学习JavaScript中的原型prototype
Aug 13 Javascript
jquery获取select选中值的方法分析
Dec 22 Javascript
动态加载js、css的简单实现代码
May 26 Javascript
require.js配合插件text.js实现最简单的单页应用程序
Jul 12 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
Oct 26 Javascript
使用webpack搭建pixi.js开发环境
Feb 12 Javascript
Vue实现跑马灯样式文字横向滚动
Nov 23 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
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
PHP如何将XML转成数组
2016/04/04 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
jQuery 使用手册(七)
2009/09/23 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
Script的加载方法小结
2011/01/12 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
基于jquery实现省市联动效果
2015/11/23 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
node中的密码安全(加密)
2018/09/17 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
Python实现基本线性数据结构
2016/08/22 Python
Python中防止sql注入的方法详解
2017/02/25 Python
python opencv之SURF算法示例
2018/02/24 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
python统计中文字符数量的两种方法
2019/01/31 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
keras 获取某层输出 获取复用层的多次输出实例
2020/05/23 Python
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
安全大检查反思材料
2014/01/31 职场文书
工作决心书范文
2014/03/11 职场文书
机关作风建设心得体会
2014/10/22 职场文书
教师辞职信范文
2015/02/28 职场文书