跳转到内容

MediaWiki:Gadget-collapsibleTables.js

维基百科,自由的百科全书

这是本页的一个历史版本,由Cwek留言 | 贡献2013年11月21日 (四) 01:16编辑。这可能和当前版本存在着巨大的差异。

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
/**
 * Collapsible tables
 *
 * 改动自//zh.wikipedia.org/w/index.php?title=MediaWiki:Gadget-collapsibleTables.js&oldid=29207188
 * 算是还原了就有使用collapsible类的表格吧……
 */
 
var autoCollapse = 2;
var collapseCaption = wgULS('隐藏▲', '隱藏▲');
var expandCaption = wgULS('显示▼', '顯示▼');
var collapsed="collapsed";

function collapseTable( tableIndex,table ) 
{
    var Table=table;
    var Button=Table.find('#collapseButton' + tableIndex).first();
    
    if ( !Table || !Button ) {
        return false;
    }
    
    var Rows=Table.find("tr");
    var Header=Table.find("th#collapsibleTableHeader"+tableIndex).first();
    
    if(!Table.hasClass(collapsed))
    {
        Rows.each(function()
        {
            if($(this).children()!=Header)
            {
                $(this).css("display","none");
            }
        });
        Button.text(expandCaption);  
        Table.addClass(collapsed);
    }
    else
    {
        Rows.each(function()
        {
            if($(this).children()!=Header)
            {
                $(this).css("display",Header.css("display"));
            }
        });
        Button.text(collapseCaption);
        Table.removeClass(collapsed);
    }
}

function createClickHandler(tableIndex,table)
{
    return function(e)
    {
        e.preventDefault();
        collapseTable( tableIndex,table);
    }
}

function createCollapseButtons() {
    var tableIndex = 0;
    var NavigationBoxes = {};
    var tables=$("table");
    
    tables.each(function()
    {
        if($(this).hasClass("collapsible"))
        {
            var HeaderRow=$(this).find("tr").first();
            if ( !HeaderRow ) {
                return;//用于跳过each()
            }
            var Header=HeaderRow.children("th").first();
            if ( !Header ) {
                return;//用于跳过each(
            }
            
            NavigationBoxes[tableIndex] = $(this);
            $(this).attr( 'id', 'collapsibleTable' + tableIndex );
            $(this).addClass(collapsed);
            Header.attr("id","collapsibleTableHeader"+tableIndex);
            
            var button=$("<span>");
            var buttonlink=$("<a>");
            
            button.css("float","right");
            buttonlink.attr("href","#");
            buttonlink.css("color",Header.css("color"));
            buttonlink.attr("id",'collapseButton' + tableIndex);
            buttonlink.text(collapseCaption);
            button.append(buttonlink);
            Header.append(button);            
        
            var clickhandler=createClickHandler( tableIndex,$(this));
            $("th#collapsibleTableHeader"+tableIndex/* +","+"a#collapseButton" + tableIndex */)
            .bind("click",clickhandler);
            tableIndex++;
        }
    });
    
    for ( var i = 0; i < tableIndex; i++ ) {
        if ( NavigationBoxes[i].hasClass( 'collapsed' ) ||
            ( tableIndex >= autoCollapse &&  NavigationBoxes[i].hasClass( 'autocollapse' ) )
        ) {
            collapseTable( i );
        }
    }
}

$( createCollapseButtons );