跳转到内容

MediaWiki:Gadget-collapsibleTables.js

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

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

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。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(Header!=$(this).children("th"))
            {
                $(this).css("display","none");
            }
        });
        Button.text(expandCaption);  
        Table.addClass(collapsed);
	}
	else
	{
        Rows.each(function()
        {
            if(Header!=$(this).children("th"))
            {
                $(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 ) {
				continue;
			}
            var Header=HeaderRow.children("th").first();
            if ( !Header ) {
				continue;
			}
			
            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);            
        
            $("th#collapsibleTableHeader"+tableIndex+","+"a#collapseButton" + tableIndex)
            .bind("click",createClickHandler( tableIndex,$(this)));
            tableIndex++;
        }
    });
    
    for ( var i = 0; i < tableIndex; i++ ) {
		if ( NavigationBoxes[i].hasClass( 'collapsed' ) ||
			( tableIndex >= autoCollapse &&  NavigationBoxes[i].hasClass( 'autocollapse' ) )
		) {
			collapseTable( i );
		}
	}
}

$( createCollapseButtons );