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 相关文章推荐
js中更短的 Array 类型转换
Oct 30 Javascript
判断输入是否为空,获得输入类型的JS代码
Oct 30 Javascript
常用的JavaScript验证正则表达式汇总
Nov 26 Javascript
一个CSS+jQuery实现的放大缩小动画效果
Feb 19 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
Feb 28 Javascript
原生js和jQuery写的网页选项卡特效对比
Apr 27 Javascript
深入浅出分析javaScript中this用法
May 09 Javascript
浅谈js的html元素的父节点,子节点
Aug 06 Javascript
js实现悬浮窗效果(支持拖动)
Mar 09 Javascript
微信小程序网络请求的封装与填坑之路
Apr 01 Javascript
json 带斜杠时如何解析的实现
Aug 12 Javascript
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
利用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实现选择排序的解决方法
2013/05/04 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
js单例模式详解实例
2013/11/21 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
python检测某个变量是否有定义的方法
2015/05/20 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
2018/01/31 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
天网面试题
2013/04/07 面试题
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
自荐信的五个重要部分
2013/10/29 职场文书
继电保护工岗位职责
2014/01/05 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
作弊检讨书范文
2015/05/06 职场文书
中学总务处工作总结
2015/08/12 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
Go语言grpc和protobuf
2022/04/13 Golang