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 相关文章推荐
JS处理VBArray的函数使用说明
May 11 Javascript
js和as的稳定传值问题解决
Jul 14 Javascript
js history对象简单实现返回和前进
Oct 30 Javascript
jQuery实现高亮显示的方法
Mar 10 Javascript
javascript实现禁止复制网页内容汇总
Dec 30 Javascript
jQuery基于正则表达式的表单验证功能示例
Jan 21 Javascript
Bootstrap表单控件学习使用
Mar 07 Javascript
Bootstrap fileinput文件上传预览插件使用详解
May 16 Javascript
纯JS实现只能输入数字的简单代码
Jun 21 Javascript
Angular2里获取(input file)上传文件的内容的方法
Sep 05 Javascript
微信小程序sessionid不一致问题解决
Aug 30 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
Nov 11 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
python的绘图工具matplotlib使用实例
2014/07/03 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
Python3 读取Word文件方式
2020/02/13 Python
Python类中self参数用法详解
2020/02/13 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
python中pyplot基础图标函数整理
2020/11/10 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
怎样创建、运行java程序
2014/08/01 面试题
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
大学生村官工作感言
2014/01/10 职场文书
车间主任岗位职责
2014/03/16 职场文书
霸气队列口号
2014/06/18 职场文书
科学发展观活动总结
2014/08/28 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏