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判断浏览器并动态调整select宽度的方法
Mar 02 Javascript
AngularJs bootstrap搭载前台框架——基础页面
Sep 01 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
Nov 09 Javascript
AngularJS表单提交实例详解
Feb 18 Javascript
Router解决跨模块下的页面跳转示例
Jan 11 Javascript
AngularJS创建一个上传照片的指令实例代码
Feb 24 Javascript
js实现点击展开隐藏效果(实例代码)
Sep 28 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
May 14 Javascript
Vue.js中的组件系统
May 30 Javascript
layui监听工具栏的实例(操作列表按钮)
Sep 10 Javascript
关于小程序优化的一些建议(小结)
Dec 10 Javascript
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
用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设计模式 Proxy (代理模式)
2011/06/26 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
js仿淘宝商品放大预览功能
2017/03/15 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
python实现简单的计时器功能函数
2015/03/14 Python
Python中使用logging模块打印log日志详解
2015/04/05 Python
Python实现队列的方法
2015/05/26 Python
详解Python中类的定义与使用
2017/04/11 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
Python关于反射的实例代码分享
2020/02/20 Python
python实现自动清理重复文件
2020/08/24 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
欧迪办公美国官网:Office Depot
2016/08/22 全球购物
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
POP文化和音乐灵感的时尚:Hot Topic
2019/06/19 全球购物
班级入场式解说词
2014/02/01 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
工程项目经理任命书
2014/06/05 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
售后服务质量承诺书
2015/04/29 职场文书