asfman
android developer
posts - 90,  comments - 213,  trackbacks - 0
/* 创建一个职责链 */
Chain={
 list:[]
 ,bind:function (o){
  /* 绑定链驱动 */
  o.onclick=function (){Chain.carry(this)}
 }
 ,carry:function(e){
  if(e == this.list[0]) return;
  /* 插到链首 */
  this.list.unshift(e);
  /* 控制链长始终为2 */
  this.list.length=2;
  /*  职责 */
  currentJob(this.list);
 }
}
// 绑定传送,并添加当前选中tab到链表中
for (var i=0;i<btns.length;i++ ) {
 Chain.bind(btns[i]);
 btns[i].index=i;
 if(i==0)Chain.list[0]=btns[i];
}
function currentJob(list){
  list[0].className= "hot";
  list[1].className= "";
  divs[list[0].index].style.display='block';
  divs[list[1].index].style.display='none';
}
posted on 2009-02-26 10:40 汪杰 阅读(328) 评论(1)  编辑 收藏 引用 所属分类: javascript

FeedBack:
# re: 职责链模式
2009-03-25 11:47 | 汪杰
slide Toggle
function Observer(doJob, bindType){
this.eventType = bindType || "click";
this.doJob = doJob;
this.list = [];
}
Observer.prototype = {
bind: function(obj){
var o = this;
$(obj)[this.eventType](function(){
o.carry(this);
return false;
});
},
carry: function(obj){
if(obj == this.list[0]) return;
this.list.unshift(obj);
this.doJob && this.doJob();
if(this.length > 2) this.length = 2;
}
}
void function initSlide(){
var o = new Observer(function(){
var cur = this.list[0], old = this.list[1];
cur && $(cur).next().slideToggle();
old && $(old).next().slideToggle();
});
$("a").each(function(i){
o.bind(this);
});
o.list[0] = $("a")[0];
o.doJob();
}();  回复  更多评论
  
只有注册用户登录后才能发表评论。

<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(15)

随笔分类(1)

随笔档案(90)

文章分类(727)

文章档案(712)

相册

收藏夹

http://blog.csdn.net/prodigynonsense

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 457557
  • 排名 - 6

最新随笔

最新评论

阅读排行榜

评论排行榜