[Javascript][Mootools]用渐进增强的方式开发选项卡(Tabs)(六)

本文介绍如何通过AJAX获取内容并集成到Tabs类中,避免重复请求相同内容,同时保持原有Tabs类的功能不变。
今天这节的讲的是用AJAX获取内容,代码大部分与《Mootools Essential》最后的例子一样,Aaron Newton在他的这本书里对这个例子阐述的很详细,我不过稍微改动了一下,让它更适合于继承我所写的Tabs类。

用AJAX获取内容有一点要考虑的是尽量不要重复的到服务器端获取同一内容,这段代码就对此做了处理,数据在得到之后,就不会再到服务器端获取。在示例中可以看到,当四个选项全点击之后,页面上方的提示就不会改变了。

由于AjaxTabs类继承自Tabs类,因此它也拥有了Tabs类的所有功能。

为什么这次不继续采用implement方法来完成,因为AjaxTabs类拥有一个与Tabs类的同名方法:showSection,而这个方法在给Tabs类添加动画效果时覆盖(override)过,如果再次使用implement方法话,又将覆盖(override)视觉效果中的方法。因此采用继承的方式将更好的完成功能需求。

AjaxTabs 继承 Tabs

AjaxTabs.js
ContractedBlock.gif ExpandedBlockStart.gif Code
 1 var AjaxTabs = new Class({
 2     
 3     Extends:Tabs,
 4 
 5     options:{
 6         cache:true,
 7         urls:[],
 8         requestOptions:{}
 9     },
10     
11     showSection:function(index, force){
12         var tab = this.tabs[index];
13         var url = this.options.urls[index] || (tab.getElement('a')? tab.getElement('a').get('href'):false);
14         if(!url || force || (this.options.cache && tab.retrieve('loaded'))) {
15             this.parent(index);
16         } else {
17             this.getSectionContent(index, url);
18         }
19     },
20 
21     getSectionContent:function(index, url){
22         var tab = this.tabs[index];
23         var section = this.sections[index];
24         var request = tab.retrieve('tabAjax');
25         if(!request) {
26             request = new Request.HTML(
27                 $merge(this.options.requestOptions,{
28                     method:'get',
29                     update:section,
30                     url:url
31                 })
32             ).addEvent('onSuccess',function(){
33                     this.showSection(index,true);
34                     tab.store('loaded',true);
35             }.bind(this));
36             tab.store('tabAjax',request);
37         }
38         request.send();
39     }
40 });

转载于:https://www.cnblogs.com/noidea/archive/2009/01/06/1370307.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值