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 目录列举函数
Nov 06 Javascript
javascript oop开发滑动(slide)菜单控件
Aug 25 Javascript
javascript实现分栏显示小技巧附图
Oct 13 Javascript
jQuery+Ajax实现无刷新分页
Oct 30 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
Jan 04 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
May 16 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
Feb 10 Javascript
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 jQuery
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
快速解决vue-cli在ie9+中无效的问题
Sep 04 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
Feb 03 Javascript
Vue解决移动端弹窗滚动穿透问题
Dec 15 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
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
老生常谈Javascript中的原型和this指针
2016/10/09 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
详解ES6之用let声明变量以及let loop机制
2017/07/15 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
通过实例了解JS 连续赋值
2019/09/24 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
js实现无缝轮播图
2020/03/09 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
python连接MySQL数据库实例分析
2015/05/12 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
Python元字符的用法实例解析
2018/01/17 Python
python爬虫实例详解
2018/06/19 Python
Python操作远程服务器 paramiko模块详细介绍
2019/08/07 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
教师旷工检讨书
2014/01/18 职场文书
大学考试作弊检讨书
2014/01/30 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
预备党员个人总结
2015/02/14 职场文书
限期整改通知书
2015/04/22 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
初三语文教学反思
2016/03/03 职场文书
Python打包exe时各种异常处理方案总结
2021/05/18 Python
AJAX实现省市县三级联动效果
2021/10/16 Javascript
vue 给数组添加新对象并赋值
2022/04/20 Vue.js