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 相关文章推荐
js setattribute批量设置css样式
Nov 26 Javascript
js 替换功能函数,用正则表达式解决,js的全部替换
Dec 08 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
Dec 20 Javascript
javascript中html字符串转化为jquery dom对象的方法
Aug 27 Javascript
JavaScript实现的多个图片广告交替显示效果代码
Sep 04 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
Oct 31 Javascript
Bootstrap响应式侧边栏改进版
Sep 17 Javascript
JS实现中国公民身份证号码有效性验证
Feb 20 Javascript
jquery中有哪些api jQuery主要API
Nov 20 jQuery
关于vue组件事件属性穿透详解
Oct 28 Javascript
JS中自定义事件的使用与触发操作实例分析
Nov 01 Javascript
浅析Vue 防抖与节流的使用
Nov 14 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下获取客户端ip地址的函数
2010/03/15 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
2017/12/21 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
2014/06/10 Python
Python脚本实现虾米网签到功能
2016/04/12 Python
Django实现文件上传下载
2019/10/06 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
Python range与enumerate函数区别解析
2020/02/28 Python
pymysql模块使用简介与示例
2020/11/17 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
瑞典在互联网上最大的宠物商店:Animail
2020/10/31 全球购物
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
教师节促销方案
2014/03/22 职场文书
管理提升方案
2014/06/04 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
小学生家长意见
2015/06/03 职场文书
怎么用Python识别手势数字
2021/06/07 Python
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android
通过Python把学姐照片做成拼图游戏
2022/02/15 Python
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs