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 相关文章推荐
用tip解决Ext列宽度不够的问题
Dec 13 Javascript
js 面向对象的技术创建高级 Web 应用程序
Feb 25 Javascript
jQuery UI 应用不同Theme的办法
Sep 12 Javascript
jquery中的过滤操作详细解析
Dec 02 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
Dec 04 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
May 27 Javascript
javascript学习笔记(六)数据类型和JSON格式
Oct 08 Javascript
jQuery实现折叠、展开的菜单组效果代码
Sep 16 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
Dec 07 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
Sep 15 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
Nov 09 Javascript
vue slot 在子组件中显示父组件传递的模板
Mar 02 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
理解PHP5中static和const关键字的区别
2007/03/19 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
设定php简写功能的方法
2019/11/28 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
JS实现随机点名器
2020/04/12 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
python3代码中实现加法重载的实例
2020/12/03 Python
网络工程师的自我评价
2013/10/02 职场文书
六查六看自查材料
2014/02/17 职场文书
如何写好自荐信
2014/04/07 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
政协会议宣传标语
2014/10/09 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
给领导的感谢信范文
2015/01/23 职场文书
伏羲庙导游词
2015/02/09 职场文书
婚宴致辞
2015/07/28 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏
Nginx反向代理、重定向
2022/04/13 Servers
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript