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 相关文章推荐
jQuery 位置插件
Dec 25 Javascript
JS对文本框值的判断示例
Mar 10 Javascript
2014 HTML5/CSS3热门动画特效TOP10
Dec 07 Javascript
jQuery插件pagination实现分页特效
Apr 12 Javascript
JavaScript中获取时间的函数集
Aug 16 Javascript
Javascript 制作图形验证码实例详解
Dec 22 Javascript
微信小程序页面生命周期详解
Jan 31 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
May 23 Javascript
如何测量vue应用运行时的性能
Jun 21 Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 Javascript
在vue中使用Base64转码的案例
Aug 07 Javascript
浅析JavaScript中的变量提升
Jun 01 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
详解webpack 热更新优化
2018/09/13 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
Python splitlines使用技巧
2008/09/06 Python
Python开发常用的一些开源Package分享
2015/02/14 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
2018/05/11 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
Etam德国:内衣精品店
2019/08/25 全球购物
大家访活动实施方案
2014/03/10 职场文书
《广玉兰》教学反思
2014/04/14 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
2015年营业员工作总结
2015/04/23 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书