JQuery最佳实践-精妙的自定义事件

上次发了文,

JQuery最佳实践-JQuery自定义事件的应用

关于JQuery自定义事件,不少同学曾发邮件问究竟日常JS应用中会不会用到,以及具体例子云云。。。

恰好最近负责的一个可视化编辑器的开发,其中有些地方便应用了JQuery的自定义事件,而且达到了很好的效果-精简代码的同时充分利用了OO的原则。

本文以实际应用开发过程中遇到的一个例子进一步说明“什么时候用JQuery的自定义事件以及怎么用”,希望可以抛砖引玉,同时权且当是回复同学们的邮件了。

 

 

 
  
/*
补充说明下:这篇文章仅说明自定义事件的一个较为特殊的用处(不代表自定义事件的典型应用):
伪装原生的dom事件,以便达到不触发原生的事件而执行了原生事件的处理逻辑”。
至于实际是否可取,我已经向jquery社区投递email问那里JS大牛的看法,有结果后我会在这里回复下大家。
*/

 

 

问题

一个复选框X,你如何便捷地触发它的click事件的处理逻辑,但是又不改变它当前的选中状态?

答案

其实没有什么标准答案,用传统的方式,写一个函数

 

 
  
var onClick = function (dom){
// 复选框x的click事件的处理逻辑
};

 

 

当仅仅需要执行处理逻辑而不改变复选框的状态时,

 

 
  
onClick(X); // X引用复选框

为了响应用户直接点击复选框,你还需要为复选框X添加相应的click处理函数,

 

 

 
  
$(X).click( function (evt){
// 执行处理逻辑
onClick( this );
});

 

 

但是,要说的是,这里可以利用自定义事件处理函数封装复选框click事件的处理逻辑!然后触发该自定义事件。而且个人觉得具有必要性和优点:

1,onClick的逻辑是属于复选框自身的,没有必要用一个全局方法来定义并剥离复选框对象

从面向对象的角度说,对象由属性和行为(方法)构成,所以onClick的逻辑可以封装在复选框的作用域(context)内。

2,充分利用匿名函数,减少全局变量或者函数的数量,有利于提高脚本的执行效率

....

代码示例

1,首先定义一个变量$x引用缓存我们的复选框对象。这点非常重要但很多js开发员没有意识到:每调用一次jquery的$方法选中某个元素=遍历一次html dom树。所以要学会利用js变量缓存对象~

 
  
var $x = $(X);
2,定义一个自定义事件evtClick,封装处理逻辑

 
  
$x.bind( " evtClick " , function (evt){
// onClick的处理逻辑
});
3,当要执行处理逻辑又不想改变复选框的选中状态时,利用trigger方法触发evtClick事件
 
  
$x.trigger( " evtClick " );
4,click事件

 

 
  
$x.click( function (evt){
$x.trigger(
" evtClick " );
});

 

 

Demo!

以下应用场景你曾经遇到过么?

需求:某个容器A,用户可以设置它的4条边框的有无以及边框色?“边框的有无”和“颜色的变化”需要联动,
就是说改变边框的时候获取当前设定的颜色,改变颜色的时候获取当前设定的边框,并及时反映到容器A上。

注:本例子边框颜色统一设置,分别设置的例子大家可以去写下~

示例请点击上面链接,同时欢迎大家光顾我的博客-漫波网络电台,一个脱离开发工作的音乐分享世界。

转载于:https://www.cnblogs.com/mamboer/archive/2010/08/11/jquery-custom-event-demo.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值