经典论坛's Archiver

omeweb 发表于 2008-7-10 11:24

自己写的模仿JQ的UI-TAB控件,兼容多浏览器

先来看看效果如何:
[img]http://omeweb.com/photo/temp/ui_tab/ui-tab.jpg[/img]
注意,这不是JQUERY的UI-TAB,核心JS大小只要2K,而且,使用比较简单,
[url=http://omeweb.com/photo/temp/ui_tab/ui_tab.htm]大家来这里看看DEMO吧[/url].......

具体的使用说明见DEMO页,[url=http://omeweb.com/photo/temp/ui_tab/ui_tab.rar]这里也提供下载[/url],如有BUG等,欢迎交流.

[[i] 本帖最后由 omeweb 于 2008-7-11 12:22 编辑 [/i]]

yw2199 发表于 2008-7-10 12:29

不错 下来研究下

WellFrog 发表于 2008-7-10 12:42

没发现可以保持刷新

omeweb 发表于 2008-7-10 13:08

如果页面里有多个这样的tab的话,能保持的就其中的一个,因为url后面的锚只有一个

xiaochan 发表于 2008-7-10 13:59

大叔,大叔……:)

faeng220 发表于 2008-7-11 09:37

[html]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<link rel="stylesheet" href="ui.tabs.css" type="text/css" media="print, projection, screen">
    <title>Simple Tabs</title>
<style>
* { font-size:14px;}
h2{font-size:24px;}
.highlight {background-color:#FFFF00;}
.note{color:#FF0000; font-weight:bold;}
/* Caution! Ensure accessibility in print and other media types... */
@media projection, screen { /* Use class for showing/hiding tab content, so that visibility can be better controlled in different media types... */
    .ui-tabs-hide {
        display: none;
    }
}

/* Hide useless elements in print layouts... */
@media print {
    .ui-tabs-nav {
        display: none;
    }
}

/* Skin */
.ui-tabs-nav, .ui-tabs-panel {
    font-family: "Trebuchet MS", Trebuchet, Verdana, Helvetica, Arial, sans-serif;
    font-size: 12px;
}
.ui-tabs-nav {
    list-style: none;
    margin: 0;
    padding: 0 0 0 4px;
}
.ui-tabs-nav:after { /* clearing without presentational markup, IE gets extra treatment */
    display: block;
    clear: both;
    content: " ";
}
.ui-tabs-nav li {
    float: left;
    margin: 0 0 0 1px;
    /*min-width: 84px;  be nice to Opera */
}
.ui-tabs-nav a, .ui-tabs-nav a span {
    display: block;
    padding: 0 10px;
    background: url(http://omeweb.com/photo/temp/ui_tab/tab.png) no-repeat;
}
.ui-tabs-nav a {
    margin: 1px 0 0; /* position: relative makes opacity fail for disabled tab in IE */
    padding-left: 0;
    color: #27537a;
    font-weight: bold;
    line-height: 1.2;
    text-align: center;
    text-decoration: none;
    white-space: nowrap; /* required in IE 6 */
    outline: 0; /* prevent dotted border in Firefox */
}
.ui-tabs-nav .ui-tabs-selected a {
    position: relative;
    top: 1px;
    z-index: 2;
    margin-top: 0;
    color: #000;
}
.ui-tabs-nav a span {
    width: 50px; /* IE 6 treats width as min-width */
    min-width: 50px;
    height: 18px; /* IE 6 treats height as min-height */
    min-height: 18px;
    padding-top: 6px;
    padding-right: 0;
}
*>.ui-tabs-nav a span { /* hide from IE 6 */
    width: auto;
    height: auto;
}
.ui-tabs-nav .ui-tabs-selected a span {
    padding-bottom: 1px;
}
.ui-tabs-nav .ui-tabs-selected a, .ui-tabs-nav a:hover, .ui-tabs-nav a:focus, .ui-tabs-nav a:active {
    background-position: 100% -150px;
}
.ui-tabs-nav a, .ui-tabs-nav .ui-tabs-disabled a:hover, .ui-tabs-nav .ui-tabs-disabled a:focus, .ui-tabs-nav .ui-tabs-disabled a:active {
    background-position: 100% -100px;
}
.ui-tabs-nav .ui-tabs-selected a span, .ui-tabs-nav a:hover span, .ui-tabs-nav a:focus span, .ui-tabs-nav a:active span {
    background-position: 0 -50px;
}
.ui-tabs-nav a span, .ui-tabs-nav .ui-tabs-disabled a:hover span, .ui-tabs-nav .ui-tabs-disabled a:focus span, .ui-tabs-nav .ui-tabs-disabled a:active span {
    background-position: 0 0;
}
.ui-tabs-nav .ui-tabs-selected a:link, .ui-tabs-nav .ui-tabs-selected a:visited, .ui-tabs-nav .ui-tabs-disabled a:link, .ui-tabs-nav .ui-tabs-disabled a:visited { /* @ Opera, use pseudo classes otherwise it confuses cursor... */
    cursor: text;
}
.ui-tabs-nav a:hover, .ui-tabs-nav a:focus, .ui-tabs-nav a:active { /* @ Opera, we need to be explicit again here now... */
    cursor: pointer;
}
.ui-tabs-disabled {
    opacity: .4;
    filter: alpha(opacity=40);
}
.ui-tabs-panel {
    border-top: 1px solid #97a5b0;
    padding: 1em 8px;
    background: #fff; /* declare background color for container to avoid distorted fonts in IE while fading */
}
.ui-tabs-loading em {
    padding: 0 0 0 20px;
    background: url(http://omeweb.com/photo/temp/ui_tab/loading.gif) no-repeat 0 50%;
}

/* Additional IE specific bug fixes... */
* html .ui-tabs-nav { /* auto clear, @ IE 6 & IE 7 Quirks Mode */
    display: inline-block;
}
*:first-child+html .ui-tabs-nav  { /* @ IE 7 Standards Mode - do not group selectors, otherwise IE 6 will ignore complete rule (because of the unknown + combinator)... */
    display: inline-block;
}

</style>
</head>
<body>
<h2>Simple Tabs</h2>

<h2>使用说明</h2>

<div>
        <ul class="ui-tabs-nav" id="Div_li_ui-tabs-selected_">
                <li class="ui-tabs-selected"><a href="javascript:void(0)"><span>高度封装</span></a></li>
                <li><a href="javascript:void(0)"><span>使用简单</span></a></li>
                <li><a href="javascript:void(0)"><span>兼容性好</span></a></li>
                <li><a href="javascript:void(0)"><span>刷新保持</span></a></li>
                <li><a href="javascript:void(0)"><span>程序控制</span></a></li>
                <li><a href="javascript:void(0)"><span>结构简单</span></a></li>
        </ul>
        <div style="display: block;" class="ui-tabs-panel ui-tabs-hide" id="Div_1">
                结构比较简单,已经封装,<span class="note">本作品为 橘子香水 原创,其中样式借用了jquery的ui-tab的样式,JS部分getElementsByClassName是来自网络,其他均为自己写的,程序还可以被扩展,也可能有bug,欢迎指正:QQ 61632273 ,MSN omeweb(at)hotmail.com。</span>
        </div>
        <div class="ui-tabs-panel ui-tabs-hide" id="Div_2">
                使用简单,两行代码 :var s=new UI_TAB();s.init("container-1");//init方法的参数就是tab的外围DIV的ID
        </div>
        <div class="ui-tabs-panel ui-tabs-hide" id="Div_3">
        兼容IE6,7,8(样式有一点问题),FF1.5,FF3.0
    </div>
        <div class="ui-tabs-panel ui-tabs-hide" id="Div_4">
        刷新页面后仍然可以保持被激活的选项卡
    </div>
        <div class="ui-tabs-panel ui-tabs-hide" id="Div_5">
        要用程序激活指定的tab,只需要:s2.activeIndex(1);//其中s2是实例名,后面的1是从0开始的序号,这里有一个例子:<a href="" onclick="s2.activeIndex(1); return false;">点这里激活第二个TAB的第二个</a>
    </div>
        <div class="ui-tabs-panel ui-tabs-hide" id="Div_6"><pre style="margin:0; padding:0;">
&lt;div id="container-1"&gt;<span class="note">&lt;!--使用时: var s=new UI_TAB();s.init("container-1");--&gt;</span>
        &lt;ul class="ui-tabs-nav"&gt;
                &lt;li class="<span class="highlight">ui-tabs-selected</span>"&gt;&lt;a href="<span class="highlight">#fragment-1</span>"&gt;&lt;span&gt;<span class="highlight">One</span>&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
                &lt;li class=""&gt;&lt;a href="#fragment-2"&gt;&lt;span&gt;Two&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
                &lt;li class=""&gt;&lt;a href="#fragment-3"&gt;&lt;span&gt;Three&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        <span class="note">&lt;!--上面的导航项目全放在class为的UL下面的LI下,高亮部分依次是默认显示的项目,显示内容的id,选项卡的标题--&gt;</span>
        &lt;div style="<span class="highlight">display: block;</span>" class="<span class="highlight">ui-tabs-panel ui-tabs-hide</span>" id="<span class="highlight">fragment-1</span>"&gt;
                &lt;p&gt;First tab&lt;/p&gt;
        &lt;/div&gt;
        <span class="note">&lt;!--上面的结构就是内容的结构,高亮部分依次是默认显示的内容,每一个内容都要有的class,以及和选项卡对应的ID--&gt;</span>
        &lt;div class="ui-tabs-panel ui-tabs-hide" id="fragment-2"&gt;
                &lt;p&gt;Second tab&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class="ui-tabs-panel ui-tabs-hide" id="fragment-3"&gt;
                &lt;p&gt;Third tab&lt;/p&gt;
        &lt;/div&gt;
&lt;/div&gt;
</pre>
    </div>
</div>

<script type="text/javascript">
//<![data[
new tab('Div_li_ui-tabs-selected_');

function tab(o){
        var $ = function(o){return document.getElementById(o)};
        var css = o.split('_');
        if(css.length!=4)return;
        o = $(o);
        o.id = css[0];
        if(o){
                var item = o.getElementsByTagName(css[1]);
                o['cur'] = item[0];
                for(var i=0;i<item.length;i++){
                        item[i]['css'] = css;
                        item[i]['link'] = o;
                        item[i]['Index'] = i+1;
                        item[i].onclick = function(){
                                this['link']['cur'].className = this['css'][3];
                                this.className = this['css'][2];
                                try{
                                        $(this['link']['id']+'_'+this['link']['cur']['Index']).style.display = 'none';
                                        $(this['link']['id']+'_'+this['Index']).style.display = 'block';
                                }catch(e){}
                                this['link']['cur'] = this;
                        }
                }
        }
}

//]]-->
</script>
</body>
</html>
[/html]
随便写的..
献丑了....
使用方法
   new tab(id)
id的命名规则,自己看...说出来觉得好绕嘴...
实例中有.你可以参照一下..
[code]
new tab("Div_li_ui-tabs-selected_")

下面的div的命名是
Div_1
Div_2
Div_3
Div_4
Div_5
Div_6
Div是 传给tab的第一个_前面的字符.
后面的数字分别对应第一个标签,第二个标签.等等....
li代表的是给当前对象下面的哪个标签绑定onclick事件.[下面会有一个table的应用实例]
ui-tabs-selected  是单击某个标签时给它设置的样式名称
最后一个因为是空所以就是个空,什么也不写就行了.中间用_分隔..
[/code]

[html]
<style type="text/css" media="screen">
        .td1{
                background: #ccc;
        }
        .td2{
                background: #FFF;
        }
        td{
                cursor: pointer;
                text-align: center;
        }
        #test_2, #test_3, #test_4{
                display: none;
        }
</style>
<table width="400">
        <tr id="test_td_td1_td2">
                <td class="td1">标签1</td>
                <td>标签2</td>
                <td>标签3</td>
                <td>标签4</td>
        </tr>
        <tr>
                <td colspan="4">
                <div id="test_1">11111111111</div>
                <div id="test_2">22222222222</div>
                <div id="test_3">3333333333333333333333333</div>
                <div id="test_4">4444444444444444444444444444444444444</div>
                </td>
        </tr>
</table>
<script type="text/javascript">
function tab(o){
        var $ = function(o){return document.getElementById(o)};
        var css = o.split('_');
        if(css.length!=4)return;
        o = $(o);
        o.id = css[0];
        if(o){
                var item = o.getElementsByTagName(css[1]);
                o['cur'] = item[0];
                for(var i=0;i<item.length;i++){
                        item[i]['css'] = css;
                        item[i]['link'] = o;
                        item[i]['Index'] = i+1;
                        item[i].onclick = function(){
                                this['link']['cur'].className = this['css'][3];
                                this.className = this['css'][2];
                                $(this['link']['id']+'_'+this['link']['cur']['Index']).style.display = 'none';
                                $(this['link']['id']+'_'+this['Index']).style.display = 'block';
                                this['link']['cur'] = this;
                        }
                }
        }
}
window.onload = function(){
        new tab('test_td_td1_td2');
}
</script>
[/html]

最后顺便说一下...做人要学会低调...把旗帜打那么高干嘛呀.

代码写成那样,还说是高度封装..

[[i] 本帖最后由 faeng220 于 2008-7-11 09:49 编辑 [/i]]

omeweb 发表于 2008-7-11 10:06

恩,我是来学习的,你做的不错,代码也很精练,思路也不错,不过是否要考虑一下下面的问题呢?

1 ,刷新保持
2 ,程序控制决定哪个显示
3 ,另外,你的ID命名方式局限有点大,特别是在DOTNET 编程的时候影响会比较大,比如在UserControl里,或者是MasterPage里

诚心提的一点意见,呵呵,另外,不想和你讨论"做人要学会低调"的问题 :D

faeng220 发表于 2008-7-11 11:31

看来你是不会低调了.真不想打击你..
1,保持刷新[我用的是Cookie]
2.程序控制决定显示哪个.. [实现方法自己看代码]

下面代码我在IE6,FF2.0,FF3.0测试均可正常运行.
IE7和Opera没条件没测试..有测试的谁给发个测试结果..


下面的例子中,第一个,在页面转入两秒后,让第二个显示,再过两秒第三个显示.
想让哪个显示.可以直接使用

对象[索引值].show();   [索引值从1开始计数]
例如
[code]
var xx = new tab('test_td_td1_td2');
if(xx)xx[2].show();
第二个标签显示
[/code]

[html]
<style type="text/css" media="screen">
        .td1{
                background: #ccc;
        }
        .td2{
                background: #FFF;
        }
        table{
                border-collapse : collapse;
                border: 1px solid #6298E1;
        }
        td{
                cursor: pointer;
                text-align: center;
        }
        #test_2, #test_3, #test_4{
                display: none;
        }
        #test2_2, #test2_3, #test2_4{
                display: none;
        }
</style>
<h1>第一个标签</h1>
<table width="400" border="1">
        <tr id="test_td_td1_td2">
                <td class="td1">标签1</td>
                <td>标签2</td>
                <td>标签3</td>
                <td>标签4</td>
        </tr>
        <tr height="200">
                <td colspan="4">
                <div id="test_1">11111111111</div>
                <div id="test_2">22222222222</div>
                <div id="test_3">3333333333333333333333333</div>
                <div id="test_4">4444444444444444444444444444444444444</div>
                </td>
        </tr>
</table>
<h1>第二个标签</h1>
<table width="400" border="1">
        <tr id="test2_td_td1_td2">
                <td class="td1">标签1</td>
                <td>标签2</td>
                <td>标签3</td>
                <td>标签4</td>
        </tr>
        <tr height="100">
                <td colspan="4">
                <div id="test2_1">11111111111</div>
                <div id="test2_2">22222222222</div>
                <div id="test2_3">3333333333333333333333333</div>
                <div id="test2_4">4444444444444444444444444444444444444</div>
                </td>
        </tr>
</table>
<script type="text/javascript">
cookie = {};
cookie.set = function(n, v, t){
                var exp  = new Date();
                exp.setTime(exp.getTime() + (t||24)*60*60*1000);
                document.cookie = n + "="+ escape(v) + ";expires=" + exp.toGMTString();
}
cookie.get = function(n){
        var arr = document.cookie.match(new RegExp("(^| )"+ n +"=([^;]*)(;|$)"));
        if(arr != null) return unescape(arr[2]);
        return null;
}

function tab(o){
        var $ = function(o){return document.getElementById(o)};
        var css = o.split('_');
        if(css.length!=4)return;
        o = $(o);
        o['old_id'] = o.id;
        o.id = css[0];
        if(o){
                var item = o.getElementsByTagName(css[1]);
                o['cur'] = item[0];
                for(var i=0;i<item.length;i++){
                        item[i]['css'] = css;
                        item[i]['link'] = o;
                        item[i]['Index'] = i+1;
                        item[i].onclick = function(){
                                this['link']['cur'].className = this['css'][3];
                                this.className = this['css'][2];
                                $(this['link']['id']+'_'+this['link']['cur']['Index']).style.display = 'none';
                                $(this['link']['id']+'_'+this['Index']).style.display = 'block';
                                this['link']['cur'] = this;
                                cookie.set(this['link']['old_id'], this['Index']);
                        }
                        item[i].show = function(){
                                if(document.all)this.click();
                                else this.onclick();
                        }
                }
                var co = cookie.get(o['old_id']);
                if(co != undefined){
                        item[co-1].show();
                }
                return item;
        }
        return false;
}
window.onload = function(){
        var xx = new tab('test_td_td1_td2');
        if(xx)setTimeout(function(){
                xx[1].show();
                setTimeout(function(){
                        xx[2].show();
                }, 2000);
        },2000);
        var x = new tab('test2_td_td1_td2');
}
</script>
[/html]
=================================================
[color=red]最后请允许我再BS一次,做人不知道低调的人..[/color]
=================================================
还有不要跟我提.NET
本人不玩.NET

[[i] 本帖最后由 faeng220 于 2008-7-11 11:33 编辑 [/i]]

asgardmoon 发表于 2008-7-11 11:49

楼上口气好低调,小弟我我学习了。。。-_!!

楼主的代码全局方法太多,不太好呀,取class用正则会更简单,不过选项卡还不错,可以自动伸缩~

omeweb 发表于 2008-7-11 12:00

非常不错,就是你的ID我还是觉得是一个小瑕疵,不适合我用.

1,仁者见仁,智者见智,至少在我的应用范围内,你的不适合我,因为我是做ASP.NET的,我以前是我玩ASP的,现在一看到ASP的代码就觉得厌恶了.

2,再者,我不认为我有多高调,观者自有分晓.如有过的地方,直接批评.

3,JS并不是我的长处,不过是一个爱好,我的那代码,有些是没有封装进去,是因为开始的时候我把它们放到一个common.js里去了,在这里不过是提取出来了.

4,JS貌似是你的长处,在这个tab问题上能和你杠上,我算是值了,不过,我觉得我写的JS和你写的差别也不是很大嘛,呵呵.

欢迎继续拍砖...

faeng220 发表于 2008-7-11 12:09

[quote]
3,JS并不是我的长处,不过是一个爱好,我的那代码,有些是没有封装进去,是因为开始的时候我把它们放到一个common.js里去了,在这里不过是提取出来了.
[/quote]
那你还在标题上写 高度封装?:confused:
兼容多浏览器,我倒没试你的代码是不是兼容其他的浏览器.
就是看了你的代码以后...特烦这种 标题党,把标题打的高高的,其实也没那么高嘛.:o

omeweb 发表于 2008-7-11 12:21

看来 你是对我的那标题有意见了?实在惭愧,因为要演示,临时把一些常用的方法提出来直接放在那里了,这里应该说是 核心代码 被封装了....仓促了,不严密啊.对不起大家.

另外,我还想请教下你的这个tab的扩展性如何,比如,怎么在某个tab里使用AJAX动态加载呢,这个对你来说肯定不是问题,因为我也不觉得是什么问题,只是来完善下而已,我的那个TAB呢,可以在那选项卡名字的href上做文章......

omeweb 发表于 2008-7-11 12:30

[quote]兼容多浏览器,我倒没试你的代码是不是兼容其他的浏览器.[/quote]

我是做程序的,我会对我做出来的东西负责,所以,我会先测试兼容性问题,目前在IE8下的样式有一点小问题(标题太短了背景没有被撑开,很容易修改),其他的都没有问题.

[[i] 本帖最后由 omeweb 于 2008-7-11 12:36 编辑 [/i]]

faeng220 发表于 2008-7-11 13:26

tab 构造类里面添加了两个新参数call和res,
call 为单击每个tab时同时激发的函数名.[类型function对象]
res 为页面刷新的时候,重不重现上一次选择的标签.[类型非undefined的值]

call 和 res这两个参数为可选参数.可传可不传.
省略res参数.则刷新页面的时候,不重现上一次选择的标签项.


对于每一个tab标签,可以通过重写标签对象的callBack来实现自定义的方法.

在callBack函数中 this指向当前的标签对象.

this['link']['id']+'_'+this['Index']为当前标签对应的要显示区域的id值.然后可以通过
document.getElementById(this['link']['id']+'_'+this['Index'])
来得到这个对象.

接下要,要做什么事..看你自己的了..

[html]
<style type="text/css" media="screen">
        .td1{
                background: #ccc;
        }
        .td2{
                background: #FFF;
        }
        table{
                border-collapse : collapse;
                border: 1px solid #6298E1;
        }
        td{
                cursor: pointer;
                text-align: center;
        }
        #test_2, #test_3, #test_4{
                display: none;
        }
        #test2_2, #test2_3, #test2_4{
                display: none;
        }
</style>
<h1>第一个标签</h1>
<table width="400" border="1">
        <tr id="test_td_td1_td2">
                <td class="td1">标签1</td>
                <td>标签2</td>
                <td>标签3</td>
                <td>标签4</td>
        </tr>
        <tr height="200">
                <td colspan="4">
                <div id="test_1">11111111111</div>
                <div id="test_2">22222222222</div>
                <div id="test_3">3333333333333333333333333</div>
                <div id="test_4">4444444444444444444444444444444444444</div>
                </td>
        </tr>
</table>
<script type="text/javascript">
cookie = {};
cookie.set = function(n, v, t){
                var exp  = new Date();
                exp.setTime(exp.getTime() + (t||24)*60*60*1000);
                document.cookie = n + "="+ escape(v) + ";expires=" + exp.toGMTString();
}
cookie.get = function(n){
        var arr = document.cookie.match(new RegExp("(^| )"+ n +"=([^;]*)(;|$)"));
        if(arr != null) return unescape(arr[2]);
        return null;
}

function tab(o, call, res){
        var $ = function(o){return document.getElementById(o)};
        var css = o.split('_');
        if(css.length!=4)return;
        o = $(o);
        o['old_id'] = o.id;
        o.id = css[0];
        if(o){
                var item = o.getElementsByTagName(css[1]);
                o['cur'] = item[0];
                for(var i=0;i<item.length;i++){
                        item[i]['css'] = css;
                        item[i]['link'] = o;
                        item[i]['Index'] = i+1;
                        if(call)item[i].callBack = call;
                        item[i].onclick = function(){
                                this['link']['cur'].className = this['css'][3];
                                this.className = this['css'][2];
                                $(this['link']['id']+'_'+this['link']['cur']['Index']).style.display = 'none';
                                $(this['link']['id']+'_'+this['Index']).style.display = 'block';
                                this['link']['cur'] = this;
                                cookie.set(this['link']['old_id'], this['Index']);
                                if(this.callBack)this.callBack.call(this);
                        }
                        item[i].show = function(){
                                if(document.all)this.click();
                                else this.onclick();
                        }
                }
                var co = cookie.get(o['old_id']);
                if(co != undefined && res!=undefined){
                        item[co-1].show();
                }
                return item;
        }
        return false;
}
window.onload = function(){
        var xx = new tab('test_td_td1_td2', who);
        xx[1].callBack = function(){//0代表第一个.1代表第二个标签项.依次类推
                alert('自定义');
        }
}
function who(){
        alert(document.getElementById(this['link']['id']+'_'+this['Index']).innerHTML);
}
</script>
[/html]

[[i] 本帖最后由 faeng220 于 2008-7-11 14:32 编辑 [/i]]

xling 发表于 2008-7-11 14:13

两位莫争了,
如果有心情,可以看看我写的:
[url]http://bbs.blueidea.com/thread-2748975-1-1.html[/url]
不要伤和气。

omeweb 发表于 2008-7-11 14:19

1,我真的很遗憾,你每次发的帖子里都带着一种挑屑和不服气,以及要突出你的js是如何如何的好.你的帖子一开始就充满了火药味.
2,我只是想要你把东西做的完善点,你却以为我是在为难你,这使我真的很生气,觉得你很无聊.
3,什么叫"不要跟我提什么ajax,貌似你提了.你水平就高了???",你以为AJAX你很牛?还是怎么滴?叫什么板?
4,我不喜欢拿自己的长处和别人的短处比,而你总以为我JS如何的乱,事实上我并没输到多少吧?优雅的代码我看多了,你的编码也不过如此吧?
5,如果有100个ajax选项,你要写上100个xx[1].callBack = function(){},我可不想做民工.

omeweb 发表于 2008-7-11 14:23

xling版主的这个去年我就用过了,很不错,我的这个不过是个轻量的

另外,我上一帖主要说的是,faeng220 扩展AJAX的方式我觉得并不好 .

faeng220 发表于 2008-7-11 14:45

回复你的1,2
  我并没有说JS怎么怎么好..这话是你自己说的.每种语言都有每种语言的优点,也有它的缺点.所以你无法做出JS和.NET或者和PHP或者JSP其他任何语言哪一种更好.

 回复3:我已经无语..还在提AJAX

回复4
  我并不是你.所以我不知道,你擅长什么不擅长什么.所以我没有拿我的长处比你的短处.
而且我并不认为JS是我的长处,也没有认为JS是你的短处.这只是你自己一个人在猜想.

回复5:
  如果你有100个选项卡,而每个选项卡上面的每个标签的要求都不一样,我想没有一个人敢说他不需要为每个标签都写一个自定义的函数.如果要求一样,则在构造对象的时候,传递一个函数名就可以了.

你每次对我的提问只是想证明,你没有输. 我并没有说你输,也没有说你赢,我只是希望你以后发帖子能谦虚点,低调点.....不要玩那种标题党,没意思.

omeweb 发表于 2008-7-11 14:55

送你一句话,我没有必要以你所谓的(谦虚,低调)标准来做事,我就是我,你所谓的标准,说白了管我什么事!!

建议版主封帖.我不会再回复了,无聊.

faeng220 发表于 2008-7-11 15:31

那你干嘛改标题??

继续把那四个字挂上面呀.

lois2008 发表于 2008-7-11 15:35

:D 漂亮,谢谢楼主!

yamajia 发表于 2008-7-30 16:31

好厉害,研究一下

lovelium 发表于 2008-7-30 16:58

都吵起来了,呵呵没必要。楼主得这个还是不错得了。共享精神就值得我们学习 虽然还是不算很完美,但是再努图啦。其实记录状态放到URL中也不是坏事,起码保持TAB状态在禁用COOKIE时还可以记录。

iou33449999 发表于 2008-7-30 18:21

呵呵 看完了觉得好想笑 顶起来你们来继续吵嘛……

xfcmamb 发表于 2008-7-30 21:49

学习下。。。

叶随风 发表于 2008-8-29 21:33

我觉得两个人水平都很高:D ,两个人的胸心都不大:) !

页: [1]



Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.