跳转到内容

MediaWiki:Gadget-collapsibleTables.js

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

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

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
var autoCollapse = 2;
var collapseCaption = wgULS('隐藏▲', '隱藏▲');
var expandCaption = wgULS('显示▼', '顯示▼');

function collapseTable( tableIndex,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(Button.test()==collapseCaption)
	{
	   Rows.each(function()
	   {
	       if(!$(this).find("th"))
	       {
	           $(this).css("display","none");
	       }
	   });
	   Button.text(expandCaption);   
	}
	else
	{
	   Rows.each(function()
	   {
	       if(!$(this).find("th"))
	       {
	           $(this).css("display",Header.css("display"));
	       }
	   });
	   Button.text(collapseCaption);
	}
}

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

function createCollapseButtons() {
	var tableIndex = 0;
	var NavigationBoxes = {};
    table=$("table");
    
    table.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 );
            Header.attr("id","collapsibleTableHeader"+tableIndex);
            
            var button=$("<span>");
            var buttonlink=$("<a>");
            var buttontext=collapseCaption;
            
            button.css("float","right");
            buttonlink.attr("href","#");
            buttonlink.css("color",Header.css("color"));
            buttonlink.attr("id",'collapseButton' + tableIndex);
            buttonlink.text(collapseCaption);
            buttonlink.append(buttontext);
            Header.append(button);
            
            var clickhandler=createClickHandler( tableIndex );
            $("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 );