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 相关文章推荐
IE中createElement需要注意的一个问题
Jul 13 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
Apr 11 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
Oct 17 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
Jun 16 Javascript
Jquery获取当前城市的天气信息
Aug 05 Javascript
最原始的jQuery注册验证方式
Oct 11 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
Apr 19 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
May 15 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
Sep 27 Javascript
layui表格分页 记录勾选的实例
Sep 02 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
Apr 13 Javascript
微信小程序文章详情功能完整实例
Jun 03 Javascript
利用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
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
php精度计算的问题解析
2019/06/21 PHP
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
小程序自定义日历效果
2018/12/29 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
Python爬虫框架Scrapy实例代码
2018/03/04 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
Html5新增标签有哪些
2017/04/13 HTML / CSS
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
娱乐地球:Entertainment Earth
2020/01/08 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
创建省级文明单位实施方案
2014/02/27 职场文书
情人节活动策划方案
2014/02/27 职场文书
二手房买卖协议书
2014/04/10 职场文书
检讨书范文1000字
2015/01/28 职场文书
公司出差管理制度范本
2015/08/05 职场文书
如何写好闭幕词
2019/04/02 职场文书
导游词之凤凰古城
2019/10/22 职场文书
python四种出行路线规划的实现
2021/06/23 Python
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技