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 获得绝对,相对位置的坐标方法
Feb 09 Javascript
javascript下数值型比较难点说明
Jun 07 Javascript
jquery合并表格中相同文本的相邻单元格
Jul 17 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
Dec 22 Javascript
第七章之菜单按钮图标组件
Apr 25 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
Sep 02 Javascript
D3.js实现雷达图的方法详解
Sep 22 Javascript
浅谈sass在vue注意的地方
Aug 10 Javascript
解决Vue打包之后文件路径出错的问题
Mar 06 Javascript
vue组件jsx语法的具体使用
May 21 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
Mar 23 Javascript
浅谈TypeScript 索引签名的理解
Oct 16 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中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
2019/10/30 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
python中as用法实例分析
2015/04/30 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
全面分析Python的优点和缺点
2018/02/07 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
python tkinter图形界面代码统计工具(更新)
2019/09/18 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
python线性插值解析
2020/07/05 Python
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
教育局长自荐信范文
2013/12/22 职场文书
简历里的自我评价
2014/01/31 职场文书
教师远程培训感言
2014/03/06 职场文书
三项教育活动实施方案
2014/03/30 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
欢迎词范文
2015/01/27 职场文书
培养联系人考察意见
2015/06/01 职场文书
大学生见习总结报告
2015/06/24 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
小学毕业教师寄语
2019/06/21 职场文书
HTML+CSS实现导航条下拉菜单的示例代码
2021/08/02 HTML / CSS