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 相关文章推荐
浅析node.js中close事件
Nov 26 Javascript
javascript实时显示北京时间的方法
Mar 12 Javascript
JavaScript 对象深入学习总结(经典)
Sep 29 Javascript
浅析BootStrap栅格系统
Jun 07 Javascript
jQuery绑定自定义事件的魔法升级版
Jun 30 Javascript
jQuery 全选 全部选 反选 实现代码
Aug 17 Javascript
JS中实现函数return多个返回值的实例
Feb 21 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
Aug 08 jQuery
微信小程序日期时间选择器使用方法
Feb 01 Javascript
如何把vuejs打包出来的文件整合到springboot里
Jul 26 Javascript
详解JavaScript事件循环机制
Sep 07 Javascript
vue+elementUI实现表格关键字筛选高亮
Oct 26 Javascript
用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
php实现用于删除整个目录的递归函数
2015/03/16 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
删除条目时弹出的确认对话框
2014/06/05 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
HTML5 实现的一个俄罗斯方块实例代码
2016/09/19 Javascript
有趣的bootstrap走动进度条
2016/12/01 Javascript
微信小程序 rich-text的使用方法
2017/08/04 Javascript
不使用 JS 匿名函数理由
2017/11/17 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
最新教师自我评价分享
2013/11/12 职场文书
公务员培训心得体会
2013/12/28 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
股权转让协议范本
2014/12/07 职场文书
骨干教师考核评语
2014/12/31 职场文书
创业计划书之酒吧
2019/12/02 职场文书
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫
SQL Server中使用表变量和临时表
2022/05/20 SQL Server