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插件tipswindown与hintbox冲突
Nov 05 Javascript
jQuery 过滤not()与filter()实例代码
May 10 Javascript
js获取php变量的实现代码
Aug 10 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
Nov 12 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
Jan 24 Javascript
javascript数组排序汇总
Jul 07 Javascript
易操作的jQuery表单提示插件
Dec 01 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
Mar 06 Javascript
Angular父子组件通过服务传参的示例方法
Oct 31 Javascript
vue中的适配px2rem示例代码
Nov 19 Javascript
详解jQuery如何实现模糊搜索
May 10 jQuery
小程序使用watch监听数据变化的方法详解
Sep 20 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
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
PHP导入导出Excel代码
2015/07/07 PHP
PHP 命名空间和自动加载原理与用法实例分析
2020/04/29 PHP
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
python常规方法实现数组的全排列
2015/03/17 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
Python退火算法在高次方程的应用
2018/07/26 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
上海方立数码笔试题
2013/10/18 面试题
应用心理学个人求职信范文
2013/12/11 职场文书
企业管理培训感言
2014/01/27 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
遗失说明具结保证书
2015/02/26 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
2022/04/11 Vue.js