JQuery最佳实践之精妙的自定义事件


Posted in Javascript onAugust 11, 2010

恰好偶最近负责的一个可视化编辑器的开发,其中有些地方便应用了JQuery的自定义事件,而且达到了很好的效果-精简代码的同时充分利用了OO的原则。

本文以我实际应用开发过程中遇到的一个例子进一步说明“什么时候用JQuery的自定义事件以及怎么用”,希望可以抛砖引玉,同时权且当是回复同学们的邮件了。

Demo-Ingenious JQuery custom event
JQuery最佳实践-精妙的自定义事件
问题:一个复选框X,你如何便捷地触发它的click事件的处理逻辑,但是又不改变它当前的选中状态?

答案:用自定义事件处理函数封装复选框click事件的处理逻辑!然后触发该自定义事件。

以下应用场景你曾经遇到过么?
需求:某个容器A,用户可以设置它的4条边框的有无以及边框色?“边框的有无”和“颜色的变化”需要联动,
就是说改变边框的时候获取当前设定的颜色,改变颜色的时候获取当前设定的边框,并及时反映到容器A上。

注:本例子边框颜色统一设置,分别设置的例子大家可以去写下~
核心代码:

<div id="demo"> 
<div class="acts"> 
<label for="txtCpk"></label>边框设置:<input type="text" size="10" id="txtCpk" name="color"/> 
<input type="checkbox" name="bd" value="top"/><span>上</span> 
<input type="checkbox" name="bd" value="right"/><span>右</span> 
<input type="checkbox" name="bd" value="bottom"/><span>下</span> 
<input type="checkbox" name="bd" value="left"/><span>左</span> 
</div> 
<textarea id="A" cols="100" rows="29"></textarea> 
</div> </body> 
<script id="js" type="text/javascript"> 
//<![CDATA[ 
//目标容器A 
var $a=$("#A"); 
//拾色器 
var $txtColor=$("#txtCpk").ColorPicker({ 
onChange:function(hsb,hex,rgb){ 
$txtColor.val("#"+hex).css("backgroundColor","#"+hex); 
//联动边框-触发自定义事件"evtClick",避免改变复选框的状态 
//这里可不能直接用$bd.trigger("click")噢; 
//$bd.trigger("click"); 
$bd.trigger("evtClick"); 
} 
}); 
//边框及自定义事件的应用 
var $bd=$("#demo input[type='checkbox']").bind("evtClick",function(evt){ 
var c=this.checked?"2px solid "+$txtColor.val():"none"; 
$a.css("border-"+this.value,c); 
}).click(function(evt){ 
$(this).trigger("evtClick"); 
}); 
//show the js 
$(document).ready(function(){ 
$a.val($("#js").html()); 
}); 
//]]> 
</script>

在线演示
Javascript 相关文章推荐
9个javascript语法高亮插件 推荐
Jul 18 Javascript
javascript 添加和移除函数的通用方法
Oct 20 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
Feb 23 Javascript
jquery入门—数据删除与隔行变色以及图片预览
Jan 07 Javascript
原生js实现日期联动
Jan 12 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
Apr 29 Javascript
Angularjs实现分页和分页算法的示例代码
Dec 23 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
Jan 06 Javascript
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
nuxt.js 在middleware(中间件)中实现路由鉴权操作
Nov 06 Javascript
解决vue $http的get和post请求跨域问题
Jun 07 Vue.js
vue项目支付功能代码详解
Feb 18 Vue.js
用js解决数字不能换行问题
Aug 10 #Javascript
JavaScript 错误处理与调试经验总结
Aug 10 #Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
Aug 10 #Javascript
javascript中的prototype属性实例分析说明
Aug 09 #Javascript
jQuery Dialog 弹出层对话框插件
Aug 09 #Javascript
jquery下json数组的操作实现代码
Aug 09 #Javascript
可以用来调试JavaScript错误的解决方案
Aug 07 #Javascript
You might like
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
php事务处理实例详解
2014/07/11 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
理解Javascript_09_Function与Object
2010/10/16 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
分享Python文本生成二维码实例
2016/01/06 Python
Python递归函数定义与用法示例
2017/06/02 Python
详解Python中for循环是如何工作的
2017/06/30 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
联想墨西哥官方网站:Lenovo墨西哥
2016/08/17 全球购物
大一学生的职业生涯规划书范文
2014/01/19 职场文书
环境工程专业自荐信
2014/03/03 职场文书
高中生操行评语大全
2014/04/25 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
小学班主任研修日志
2015/11/13 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL